JVM内存回收与爆炸问题

Posted on 2021-11-06 01:56  用户注册了一次  阅读(105)  评论(0编辑  收藏  举报

问题:

JVM内部内存正常,但总的RES爆了

结论用参数

HEAP_OPTS: -Xms1024M -Xmx4096M
JAVA_OPTS: -XX:+UseG1GC -XX:MaxHeapFreeRatio=50 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
MALLOC_ARENA_MAX: 4

 

第一行:堆内存下限低,上限给到峰值即可

第二行: 换用G1

第三行:减少单个线程64MB块至4个

 

JDK8的RES回收策略(HotSpot):

JVM需要的总内存约等于=堆最小值(按Free比例)+元数据最大值+代码缓存,故必须控制这几个值加起来少于内存总量,稳妥来讲80%算适合(要给线程留内存)

在控制好这几块占总内存比例的情况下,RES回收正常