linux下分析Java程序内存汇总

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下分析Java程序内存汇总相关的知识,希望对你有一定的参考价值。

使用pmap查看进程内存

执行命令

使用pmap能够查看某一个进程(非java的也能够)的内存使用使用情况,
命令格式:
pmap 进程id

演示样例说明

比如执行:
pmap 12358
显示结果例如以下图(内容较多, 分成几张图说明):
内容開始部分
技术分享
内容结束部分
技术分享
上图中,
第一列。内存块起始地址
第二列。占用内存大小
第三列,内存权限
第四列。内存名称。anon表示动态分配的内存,stack表示栈内存
最后一行。占用内存总大小,请注意,此处为虚拟内存大小,占用的物理内存大小能够通过top查看

使用jmap查看Java进程对象使用情况

执行命令

使用jmap能够查看某个Java进程中每一个对象有多少个实例,占用多少内存。
命令格式:
jmap -histo 进程id

演示样例说明

比如执行:
jmap -histo  12538
显示结果例如以下图(内容较多, 分成几张图说明):
内容開始部分
技术分享
内容结束部分
技术分享
上图中:
第一列,序号。无实际意义
第二列,对象实例数量
第三列,对象实例占用总内存数。单位:字节
第四列,对象实例名称
最后一行,总实例数量与总内存占用数

另,部分演示样例说明(还没弄明确,兴许补充):
[C。
[B。
[I,
[J,
[L,

使用jstat查看Java内存分布及回收情况

直接看这个帖子:
http://blog.csdn.net/zlzlei/article/details/46471627

补充

发现一个不错的jmap,jstat等java分析工具的博客。例如以下:
http://blog.csdn.net/fenglibing/article/details/6411999











以上是关于linux下分析Java程序内存汇总的主要内容,如果未能解决你的问题,请参考以下文章

Java内存CPU占用率过高

Java程序内存的简单分析

如何查看linux上java实例消耗内存

Java面向对象程序的执行顺序及内存分析

Java面向对象程序的执行顺序及内存分析

46栈内存溢出内存区域(程序计数器Java 虚拟机栈本地方法栈Java 堆方法区直接内存内存溢出)与内存溢出(对象实例化分析)