网站首页flash制作,家装效果图用什么软件哪个好,电脑培训学校课程,移动端网站怎么做的OOM, 全称 “Out Of Memory”#xff0c;即内存用完的意思。JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时#xff08;可分配内存大于需要分配的内存#xff09;, 就会抛出 java.lang.OutOfMemoryError。在实际的生产应用中#xff0c;一旦… OOM, 全称 “Out Of Memory”即内存用完的意思。JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时可分配内存大于需要分配的内存, 就会抛出 java.lang.OutOfMemoryError。在实际的生产应用中一旦出现OOM很可能应用面临崩溃服务器CPU资源被消耗尽这是非常可怕的事。 jvisualvm(Java VisualVM)能够监控线程内存情况查看方法的CPU时间和内存中的对象已被GC的对象反向查看分配的堆栈是JDK提供非常好用的可视化图形观察内存情况的工具。
想通过jvisualvm远程观测虚拟机的内存情况可以通过在JVM参数配置加上以下配置生产不建议配
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.portxxxport -Dcom.sun.management.jmxremote.sslfalse - Dcom.sun.management.jmxremote.authenticatefalse -Djava.rmi.server.hostnamexxxip
参数解释如下
-Dcom.sun.management.jmxremote 添加一个jmx远程连接属性 -Dcom.sun.management.jmxremote.portxxxport 指定连接的应用端口号 -Dcom.sun.management.jmxremote.authenticatefalse 是否启用验证 -Dcom.sun.management.jmxremote.sslfalse 是否启用ssl -Djava.net.preferIPv4Stacktrue 是否优先使用ipv4 -Djava.rmi.server.hostnamexxxip 指定远程主机的ip地址
在jdk的bin目录下双击jvisualvm远程主机添加远程主机然后添加JMX连接使用安全凭证登录即可远程观察JVM的运行情况在压测或者复现生产问题故障十分有效。 连接上去可以看到一个健康的Java应用的内存回收折线图。
我们还可以通过jstat工具来查看应用的回收情况。jstat -gcutil xxx 3s 每三秒输出xxx进程号内存回收情况。这个可以在生产在线环境查看对判断应用健康很有帮助。 S0幸存1区当前使用比例
S1幸存2区当前使用比例
E伊甸园区使用比例
O老年代使用比例
M元数据区使用比例
CCS压缩使用比例
YGC年轻代垃圾回收次数
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间
从上图可以看出老年代频繁回收3秒已经进行了好几次fullGC且老年代做垃圾回收并没有释放多少内存即内存溢出了CPU基本都在忙着做垃圾回收说明已经OOM了。下图通过top命令可以看到第一个进程CPU飙升它正是此我们监测的Java应用正上演着OOM应用已不能正常处理业务。