本地监控参数
-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8087 -Dcom.sun.management.jmxremote.rmi.port=8087 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false

配置用户密码
jre/lib/management下
cp    jmxremote.password.template      jmxremote.password
chomd   +w   jmxremote.password   然后取消最后肉行注释即可

赋予文件权限:chmod   600    jmxremote.password    jmxremote.access

放开防火墙
sudo firewall-cmd --zone=public --add-port=8087/tcp --permanent
sudo firewall-cmd --reload

监控后可用jconsole远程:如图效果:

java 应用监控配置

从上到下(粗略解释)

  1. 堆:对象实例 (java8+字符串常量池)
  2. 非堆: 不解释

java 应用监控配置

  1. EdenSpace::新建对象区 –Xmn指定
  2. SurviverSpace::eden GC后会存到幸存区
  3. OldGen :缓存对象
  4. MetaSpace::类的对象(有限制会报OOM异常)+方法、常量池(无限制,用系统内存)
  5. CodeCache JIT编译的热点代码缓存
  6. Compressed Class Space:类对象

顺便给出点vm参数意见

-Xmn Sun官方推荐配置为整个堆的3/8。
-XX:NewRatio=2
-XX:SurvivorRatio=4
根据2:8定律为1:4, YongGen /newGen = 4/(4+1*2)

关于CodeCache:,右边是默认值

64-bit server, Java 8*  48M
64-bit server with Tiered Compilation, Java 8  240 MB
Jdk8中server模式默认采用分层编译方式,如果需要关闭分层编译,需要加上启动参数-XX:-TieredCompilation

-XX:ReservedCodeCacheSize=256M
在jdk8中,提供了一个启动参数XX:+PrintCodeCache在jvm停止的时候打印出codeCache的使用情况。其中max_used就是在整个运行过程中codeCache的最大使用量。可以通过这个值来设置一个合理的codeCache大小,在保证应用正常运行的情况下减少内存使用。

相关文章: