10回复
2年前
【赏金25元】JVM 进程RSS占用高,又不在NMT范围
pmp里面 有10多个RSS是64M的块,而且不在NMT统计范围内
dump内存
通过dd dump出来地址对应的内存,也看不出来里面存的啥内容。里面内容比较规律:一点内容,空白、一点内容、空白…如图所示。
请教,这下面该怎么分析?
写一个malloc的hook函数,打印分配的地址、线程ID,然后和jstack的输出对比,查看是那个线程干啥分配的?
1、这个是linux下malloc 64M的问题?
我看其他的64M也是引起虚拟内存偏高,并不会引起RSS。
2、如果是64M的问题,看之前的文章说:
arena 的数量限制在 32 位系统上是 2 * CPU 核心数,64 位系统上是 8 * CPU 核心数,当然我们也可以使用 MALLOC_ARENA_MAX (Linux 环境变量,详情可以查看 mallopt(3)[1])来控制。查看发现运行 JVM 进程的环境 CPU 信息(物理 CPU 核数):Core(s) per socket: 64 。
备注:这个机器是8核的。
2062 阅读