finalize();(不建议使用,代价高,不确定性大)

如果你在一个类中覆写了finalize()方法,

那么你可以在第一次被GC的时候,挽救一个你想挽救的对象,让其不被回收,但只能挽救一次。

GC内存回收中的

new generation 新生代

tenured generation 老年代

Minor GC新生代GC

Major GC/Full GC 老年代GC

对象晋升为老年代的年龄阀值,可以通过参数  -XX:MaxTenuringThreshold设置(每熬过一次Minor GC,年龄加一岁)

对于JVM内存配置参数:
-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 ,其最小内存值和Survivor区总大小分别是(D)
A 5120m,1024m
B 5120m,2048m
C 10240m,1024m
D 10240m,2048m -Xms -Xmx分别设置堆的最小值和最大值,如果要设置成堆的大小可变,那么可以将最大值和最小值设置成不一样,如果要将堆大小固定,那么只需将最大值和最小值设置成一样的就行。
jvm中分为堆和方法区
堆又进一步分为新生代和老年代
方法区为永久代
堆中区分的新生代和老年代是为了垃圾回收,新生代中的对象存活期一般不长,而老年代中的对象存活期较长,所以当垃圾回收器回收内存时,新生代中垃圾回收效果较好,会回收大量的内存,
而老年代中回收效果较差,内存回收不会太多。
基于以上特性,新生代中一般采用复制算法,因为存活下来的对象是少数,所需要复制的对象少,而老年代对象存活多,不适合采用复制算法,一般是标记整理和标记清除算法。
因为复制算法需要留出一块单独的内存空间来以备垃圾回收时复制对象使用,所以将新生代分为eden区和两个survivor区,每次使用eden和一个survivor区,另一个survivor作为备用的对象复制内存区。
综上:
-Xmn设置了新生代的大小为5120m,而-XXSurvivorRatio=,即Eden:FromSurvivor:ToSurvivor=3:1:1;所有将新生代共分成5分,eden占三份,survivor占两份,每份1/

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域(永久代---方法区),这块内存主要是被JVM存放Class和Meta信息的,

对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其子类来引用父类中定义的静态字段,只会触发父类的初始化而不会触发子类的初始化。

03-31 10:42