国外平面设计网站大全,weui做购物网站的案例,网站悬浮窗,湖南网站建设开发最近线上出现类似内存溢出问题#xff0c;需要排查具体原因#xff0c;记录过程#xff0c;方便备查。
一、数据抓取
在启动参数中添加参数#xff0c;可参照以下设置。 参数的作用是在程序发生内存溢出 OutOfMemory 时打印日志#xff0c;dump下来#xff0c;方便用工…最近线上出现类似内存溢出问题需要排查具体原因记录过程方便备查。
一、数据抓取
在启动参数中添加参数可参照以下设置。 参数的作用是在程序发生内存溢出 OutOfMemory 时打印日志dump下来方便用工具分析溢出情况。
-Xloggc:/home/logs/
-XX:NumberOfGCLogFiles8
-XX:PrintGCDateStamps
-XX:HeapDumpOnOutOfMemoryError
-XX:UseGCLogFileRotation
-XX:GCLogFileSize600m
-XX:HeapDumpPath/home/logs/
-XX:PrintGC明确两个命令jmap 和 dump jmap 是 Java 的一个命令行工具,用于打印有关 Java 堆的信息包括不同代的大小、总堆的大小以及不同对象使用的内存量。 dump命令是一个备份文件系统的工具。它可用于创建文件系统的镜像以便在物理设备或远程存储中进行恢复。手动dump 在Linux系统手动抓取Java栈堆记录信息命令如下图所示。
jamp -dump:formatb,file/dump.hprof或者可以写个bash脚本可循环抓取。
#! /bin/bash
read -p input process id process_id
for((i1;i10;i))
do
jamp -dump:formatb,file/dump$i.hprof $process_id
sleep 10
done二、记录设置参数过程
1FullGC 瞬时次数 在未指定GC算法时用监控软件发现出现 FullGC现象瞬时值次数达到12次。
指定G1算法即useG1FullGC现象消失。
可在JVM参数中指定G1参数如下所示。
-XX:UseG1GC2调整栈大小 Jvm 默认栈大小为1m可根据实际需要调整大小本次调整栈大小为2m可参考以下命令。
-Xss2m三、JVM分析工具分析
对采集到的文件进行JVM分析主要有两个工具 Java VisualVM 和 Eclipse Memory Analyzer
在cmd下输入jvisualvm命令可以调用出 jvisualvm 界面。 在弹出页面 选择hprof文件即可。 打开界面如下所示可以看到堆栈中主要占用情况点击可查看详情。 方式一、mat 软件安装 下载地址Eclipse Memory Analyzer官网下载页面如下图所示。 根据实际需要选择对应的版本这里选择的是Windows版本进入下一步选择 Download 等待下载即可。 若镜像下载不下来可以尝试第三方下载方式如 mat下载。 软件下载完毕在编辑栏 file 导入hprof 文件即可如下图所示。 在 总览页面Overview 下展示总体情况可点击 支配树 dominator tree 浅堆(Shallow Heap) 是指一个对象所消耗的内存。Retained Heap的大小为回收它时候能回收的heap大小包括回收它能直接/间接引用到的对象大小的总和(不包括被GC Root直接间接引用的)从下图看出本次是log4j日志占的比重较大。
方式二、 Mat插件 在eclipse的编辑栏 - help - Install New Software如下图所示。 在弹出的页面输入 http://download.eclipse.org/mat/1.8/update-site/如下图所示。 点击 ok 后远程搜索显示结果勾选 Memory Analyzer for Eclipse IDE 即可。 点击next 后直接等待安装即可。 插件的方式也可查看内存占用情况。