Java内存设置与监控分析

设置Java运行时内存(tomcat为例)

 JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xmn512M -XX:PermSize=256M -XX:MaxPermSize=256M";

server模式,堆内存2G,新生代512MB,永久代256MB,收集器由jvm自动选择。

各区域大小应根据应用的实际情况调整,推荐参数为:不配置。

 

内存分配情况查看

查看堆内存分配情况:jmap -heap pid 

活动实例采集:jmap–histo:live pid 


内存回收情况( jstat -gcutil pid 3000 3)
图片
pid : 608  每3秒采集一次,共采集3次

gcutil 可观察jvm内存回收情况,s0,s1为 from/to space空间,e表示eden区占用率,o为老年区占用率,p为永久区占用率,ygc表示新生代gc次数,fgc表示full gc次数。

频繁的 ygc,特别是 fgc 将很可能导致CPU高占用现象,这时需要结合以下的 thread dump 或堆转储找出原因。

 

高占用CPU线程
使用工具 top -H (Linux)  ProcessExplorer (Windows),找出高占线程ID
转十六进制后,在下面的 thread_dump 中查找

 

Thread dump

1. Visual VM 下的 ThreadDump
2. kill -3 java_pid (linux )或 ctrl + break ( windows )
3. jstack pid > thread_dump.txt
dump 出系统正在运行的线程信息,是定位源码位置的关键手段

 

Heap dump
jmap -dump:format=b,file=m.hprof pid
生成堆转储文件,再结合mat分析,可以帮助检测大对象,分析泄露情况

活动线程
Windows: netstat -ano|find "8080"|find "ESTABLISHED" /c
Linux: netstat -ano|grep "8080"|grep "ESTABLISHED"|wc -l


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值