调优:full GC (老年代对象满了,再放)-->OOM
减少full GC的次数。STW, stop the world,fullGC时STW。
假设不STW,可达性分析去找对象,程序执行完了,GC没有结束,程序结束,很多变量就没了,引用也没了,之前不是垃圾,GC没有结束,这个现在变为垃圾了,没有指向了,GC就不准确了,GC可能就不能结束。对象状态一直在变。单线程效率还高。
GC垃圾收集器都会STW,时机不一样。
eg:下单时机比较均匀,压力并不大。
jvm 参数设置:
-Xms 初始堆大小 -Xmx最大堆大小
对象被挪到老年代:15岁+大对象+survivor 放不下(这批对象>50%)+动态年龄判断机制(
虚拟机并不是永远地要求对象年龄必须达到了-XX:MaxTenuringThreshold=15才能晋升老年代;
动态年龄判断: Survivor区的对象年龄从小到大进行累加,当累加到X年龄(某个年龄)时占用空间的总和大于50%(可以使用-XX:TargetSurvivorRatio=?来设置保留多少空闲空间,默认值是50),那么比X年龄大的对象都会晋升到老年代。)