GC
Java中的GC信息保存在Heap中;其中包含年轻代和老年代;老年代中包含一个伊甸园和两个Server区,比率 8:1:1;其中在伊甸园区域使用的标记清除、标记整理、和复制算法;
GC对象(1、引用计数 2、可达性分析)
GCRoot包括(本地方法栈中引用的对象、虚拟机栈中引用的对象、方法区中通引用的静态属性、方法中常量引用的对象)
年轻代中垃圾回收的方式
在伊甸园区域存在大量的对象,这些对象大部分都会在做可达性分析和引用技术时都为可清除,少部分对象还存在引用等,这时候在第一次复制时会将伊甸园中的数据复制一份到Server0中,其余的数据清除,在第二次GC时会再一次标记Server0中的数据和伊甸园中的数据哪些数据还是需要的,这时候将两个区域的有用的数据做一次复制到Server1中,sever0和伊甸园中的数据被清除,依次循环,此过程中始终有一个server中的数据是空的;当一个数据被标记多次以后被移入老年代
老年代中的GC->full gc;
GC中常用的垃圾收集器
1、 Parallel->更加关注吞吐量 年轻代复制算法,老年代标记压缩算法
2、 CMS->使用标记-清除算法
3、 G1收集器->结合了以上两种算法,分块操作,多个年轻代 老年代;提高性能每次只操作堆中的一个地方
JVM调优工具
VisualVM
1、安装方式 - idea-setting-plugin-search-install-restart
2、点击以下两个按钮,即可打开
2.1、如果需要配置,在java安装目录bin中找到java\bin\jvisualvm.exe
2.2、选择java的安装位置
项目启动后会自动弹出
命令:
待补充