求助>JVM启动gc一次old gen就有对象过去>
1回复
1月前

JVM启动gc一次old gen就有对象过去



image.png

jvm执行一次YGC,from 和 to 都是 0,而且Eden区对象很小,也就几十M,怎么老年代堆内存还是有被占用呢?

刚启动,执行一次gc, old gen就有了

运行代码
image.png

jvm参数

-Xms512m
-Xmx512m
-Xmn256m
-Xss512k
-XX:SurvivorRatio=6
-XX:TargetSurvivorRatio=80
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=256m
-XX:ParallelGCThreads=1
-XX:PretenureSizeThreshold=2m
-XX:MaxTenuringThreshold=15
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-XX:+PrintTenuringDistribution
-XX:+PrintGCCause
-XX:+PrintAdaptiveSizePolicy
-XX:+PrintPromotionFailure
-XX:+PrintTLAB
-XX:+PrintPLAB
-XX:+PrintOldPLAB
-XX:+PrintHeapAtSIGBREAK
-XX:+PrintClassHistogramAfterFullGC
-XX:+UnlockDiagnosticVMOptions
-XX:+TraceGCTaskThread

693 阅读
请先登录,再评论

-XX:+PrintTenuringDistribution 加上这个参数,详细看下YGC时候的晋升情况;不过看大小比例,如果是S区全部晋升,那old区不会占用那么小,大概率应该是一些特殊情况下的old区直接分配;可以提供下详细的GC日志。

21月前