JVM基础笔记

简介: JVM基础笔记

 熟GC常见算法,熟悉常见的垃圾收集器,具有实际JVM调优实战经验

image.gif

java程序开始执行,会有一个栈产生,一个线程一个栈。一个方法对应一个栈帧

堆空间是在程序运行的时候动态分配的一个空间

栈空间自动释放,堆空间涉及释放问题

野指针:

--同一个对象,两个指针,一个释放了,一个不知道还拿来用

--同一个指针,不同位置

--不再指向任何对象的指针

--NullPointerExcetion

并发问题:

--多线程访问同一块儿内存空间

语言的发展历史

c/c++

--手工管理内存

--忘记释放  内存泄漏        memory leak

--释放多次        产生极其难以调试的bug,一个线程空间莫名其妙被另外一个释放了

--开发效率很低

java  Python go js kotlin scala

--方便内存管理的语言

--GC         Garbage Collector        垃圾回收机制        应用线程只管分配,垃圾回收器负责回收

--大大降低了程序员门槛

rust

--运行效率超高(对标 c c++)

--不用手工管理内存(没有GC)

--学习曲线巨高(所有权 任何一个值任何时候都只归属一个变量 变量有且只有一个)

--你只要程序语法通过,就不会有bug

什么是垃圾:当没有引用指向时

垃圾回收算法:

mark-sweep:标记清除法                        碎片化

copying:负责法                                    浪费空间

mark-compact:标记整理法                   效率偏低

分代模型

新生代:刚刚诞生的对象,更新频繁,复制算法,老年代:标记清除,或标记整理或者混合使用

G1前都是分代,G1后都是分区

cms         并发的标记清除

image.gif

CMS:

初始标记:STW       找root标记

并发标记:会有错标        三色标记算法(golang)

重新标记:STW

并发清理:


相关文章
|
5月前
|
Java 编译器 开发者
旁边的同事突然晋升阿里P7,只因偷偷学习了这份JVM笔记?
大家都是有经验的Java开发人员,想想为何要学习JVM? [面试?调优?装逼? ] 不管出于何种原因,总之你得先学好。那怎么学好呢?
|
5月前
|
存储 架构师 算法
收下我的膝盖!阿里架构师编写的668页Java虚拟机笔记真强
从Java诞生至今已有二十余年,基于虚拟机的技术屏蔽了底层环境的差异,一次编译,随处运行的思想促进了整个IT上层技术应用产生了翻天覆地的变化。Java作为服务端应用语言的首选,确实大大降低了学习和应用的门槛。
|
9月前
|
Java 编译器 开发者
旁边的同事突然晋升阿里P7,只因偷偷学习了这份JVM笔记?
大家都是有经验的Java开发人员,想想为何要学习JVM? [面试?调优?装逼? ] 不管出于何种原因,总之你得先学好。那怎么学好呢? 每个人对于JVM的了解可能不一样,这就要考虑到怎么切入 既然大家都学习过Java,那不妨就从Java开始聊起,同时也是扫盲,毕竟不是每个小伙伴都是计算机专业
|
10月前
|
运维 监控 安全
花20天刷完Alibaba JVM笔记去面阿里,却意外拿到京东Offer?
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。
|
10月前
|
设计模式 监控 算法
爱了爱了!阿里爆款Java性能优化神仙笔记!调优不止JVM
Java性能优化,它存在的理由有很多。计算机面对海量数据或者任务时,无论如何你都会碰到性能压力,唯一的选择是你会把这个压力放在哪一层或者哪一个位置来应对,以及采取什么应对措施。程序凑合着上线是一回事,而在压力下能够优美地运行往往很不容易。
|
存储 缓存 算法
JVM笔记
JVM笔记
58 0
JVM笔记
|
算法 Java Linux
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
166 0
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【下部】
|
算法 Java 编译器
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】
147 0
「月光宝盒」JVM研究系列「技术总结笔记」Java虚拟机垃圾回收认知和调优的"思南(司南)"【上部】
|
安全 Java API
JVM系列(四):沙箱安全机制笔记
Java安全模型的核心就是Java沙箱(sandbox)。 沙箱机制就是将Java代码限定只能在虚JVM虚拟机中特定的运行范围,并且严格限制代码对本地系统资源访问,通过这样的方式来保证对Java代码的有效隔离,防止对本地操作系统造成破坏。
JVM系列(四):沙箱安全机制笔记
|
前端开发 安全 Java
JVM系列(三):双亲委派机制笔记
Java类的加载过程是动态的,它不会一次性把程序所有的类全部加载后再运行,而是先保障程序运行的基础类加载到JVM虚拟机当中,其他的类,一般是再需要的时候才会去加载,这样的运行机制也达到了节约内存的目的。
JVM系列(三):双亲委派机制笔记