Java虚拟机的相关笔记

1.垃圾GC回收事件Minor GC(只清除新生代),Full GC(清除新生代和老年代),Major GC(清除新生、老年代和持久代)。

2.堆分为新生代、老年代和持久代,持久代一般存放静态文件。

3.新生代和老年代的比例设置,在新生代会触发Minor GC,回收频率快,且回收事件快,老年代触发Full GC,回收频率慢,且回收时间长,所以要根据项目对象的存活时间来做相应的设置。新生代中的Eden和survivor的比例设置,一般Eden要比survivor大得多。

4.新生代和老年代的比例设置可以通过-XX:NewRatio相对设置和-Xmn绝对设置来进行设置,新生代/老年代。

5.新生代中的Eden和survivor的比例设置可以通过-XX:SurvivorRatio来设置,Eden/from=Eden/to。

6.HotSpot虚拟机的结构基本是:类加载子系统,方法区和堆,栈,pc寄存器,执行引擎,垃圾回收系统,(直接内存和本地方法栈)。

7.方法区是存放类信息,堆是所有线程共享的区域,栈是每个线程都有一个的区域。

8.垃圾回收算法:标记计数法,复制算法,标记压缩发,分区法,分代法。

9.垃圾回收器:串行回收器(单线程回收),并行回收器(多线程回收,-XX:+UseParNewGC,工作在新生代,回收算法和串行回收器一样;-XX:+UseParallelGC,工作在新生代,算法是复制算法;-XX:+UseParallelOldGC,工作在老年代,算法是标记压缩法),cms回收器(标记清除法),注重系统回收时的停顿时间和G1回收器,注重系统的吞吐量(单位时间内系统能处理的请求量)。

10.性能监视器:JDK自带的Jconsole.exe和JavavisualVM.exe

11.对象被回收的判断依据是什么?

被引用次数为0,。

12.什么时候触发垃圾回收?

1),因为垃圾回收时会停止应用,所以一般是在应用空闲的时候触发。

2),内存快满的时候触发,新生代快满的话会触发minor gc,内存堆快满的时候会full gc。

13.system.gc() 会触发full gc,但不能保证马上触发。

14.默认类加载器是bootstrap classloader

15.触发FULL GC的条件:1)system.gc();2:老年代空间不足的时候;3)方法区空间不足的时候;4)如果进行minor.gc后放到老年代的平均对象大小大于老年代的剩余空间大小时,例如程序第一次触发MinorGC后,有6MB的对象晋升到旧生代,那么当下一次Minor GC发生时,首先检查旧生代的剩余空间是否大于6MB,如果小于6MB,则执行Full GC。

posted on 2017-04-28 17:14  3池  阅读(102)  评论(0编辑  收藏  举报

导航