欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JVM 内存分析

程序员文章站 2022-03-08 20:17:34
...
源:http://kevin1.iteye.com/blog/1538471
1.获取java程序进程号
Java代码  收藏代码

    jps 



2.jmap
Java代码  收藏代码

    jmap pid #打印内存使用的摘要信息 
    jmap –heap pid #java heap信息 
    jmap -histo:live pid #统计对象count ,live表示在使用 
    jmap -histo pid >mem.txt #打印比较简单的各个有多少个对象占了多少内存的信息,一般重定向的文件 
    jmap -dump:format=b,file=mem.dat pid #将内存使用的详细情况输出到mem.dat 文件,可以用jvisualvm等工具进行内存分析 
      



3.jstack
Java代码  收藏代码

    jstack $PID 
    可以找出cpu使用最高的对象,jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息 



4.jinfo
Java代码  收藏代码

    jinfo $PID 
    Java Configuration Info 



5.jstat
Java代码  收藏代码

    jstat -gcutil pid #统计gc信息统计 
    jstat -gcnewcapacity pid #年轻代对象的信息及其占用量 
    更多详情见: http://www.2cto.com/kf/201109/105988.html 



6.参数设定
Java代码  收藏代码

    -XX:PrintGCDetails 控制台显示收集器日志信息 
    -Xms 20M、 -Xmx20M -Xmn10M 堆大小为20M,不可扩展,其中新生代为10M 
    -XX:+PrintTenuringDistribution=15 年龄多大进入老年代,默认为15 
    -XX:HandlePromotionFailure=true|false 担保失败,新生代没有空间,可以直接放入老年代中,如果为true,则只进行一次Minior GC,否则进行一次Full GC