0.什么是GC?
GC用于跟踪内存中的对象,并回收哪些不再被其他对象引用的对象;
内存中的对象类型分活动对象(当前正被其他对象引用的对象)和非活动对象(这类对象不再被其他对象所引用,是孤立的对象。这类对象可以回收,回收的堆空间用于分配给其他新创建的对象)。
1.GC触发的条件:
-系统空闲(GC线程优先级低于系统应用线程,当系统中没有应用线程执行时,GC会被触发);
-堆空间内存不足(当堆空间的内存不足以创建对象时,GC会被触发,如果第一次GC仍不能获得足够的空间,第二次GC将被触发,如果这一次仍然无法获得足够的空间,“Out Of Memory”将被抛出)
2.影响GC执行时间、频度的因素
-JVM 堆(Heap)空间的大小
- 堆空间设置偏大,fullGC执行比较耗时,但执行频率会降低;
- 堆空间设置恰好符合应用内存需求,fullGC执行很快,但执行会变得更频繁;
在性能测试中,在某个时间点发生了full
gc, CPU的使用率会升高