IDE 改jvm内存大小 打印gc处理日志 ----jprofile内存分析工具使用和分析
探讨过程:
jvm内存(堆内存)了解
jvm内存查看操作--笔记
IDE 改jvm内存大小 打印gc处理日志 ----jprofile内存分析工具使用和分析
前言
jprofile 是IDE的插件
mat 是eclipse的插件
他们都是分析内存泄漏的
jvm了解
https://www.cnblogs.com/kaibindirver/p/15977602.html
参考:
https://zhuanlan.zhihu.com/p/109870776?from_voters_page=true
https://blog.csdn.net/axin1240101543/article/details/105142141/
下面是看狂神的
https://www.bilibili.com/video/BV1iJ411d7jS?p=10&spm_id_from=pageDriver
-Xms 设置初始化内存分配大小 默认 1/64
-Xmx 设置最大初内存分配 默认1/4
下面命令意思: 打印GC垃圾回收信息
-Xms1024m -Xmx1024m -XX:+PrintGCDetails
查看jvm内存大小的代码
// 查看jvm内存大小 @GetMapping( "/getmemory" ) public Object Memory() { Runtime run = Runtime.getRuntime(); long maxMemory = Runtime.getRuntime().maxMemory(); long totalMemory = Runtime.getRuntime().totalMemory(); long freeMemory = Runtime.getRuntime().freeMemory(); long usableMemony = maxMemory - freeMemory + freeMemory; return "可以获得最大内存是:" + maxMemory/1024/1024 + "M" + "\r\n" + "已分配到的内存大小是:" + totalMemory/1024/1024 + "M" + "\r\n" + "所分配内存的剩余大小是:" + freeMemory/1024/1024 + "M" + "\r\n" + "最大可用内存大小是:" + usableMemony/1024/1024 + "M" + "\r\n" ; }
响应结果:
可以获得最大内存是:1024M 已分配到的内存大小是:1024M 所分配内存的剩余大小是:708M 最大可用内存大小是:1024M
内存溢出的话也会打印出 GC的过程,没溢出也会打印 内存Gc的过程
jprofile
IDE安装jprofile插件
客户端工具下载
https://xclient.info/s/ej-technologies--jprofiler.html
IDE配置启动的jprofile软件位置
当使用jprofile启动可以i实时查看内存使用情况
发生OOM的时候 dump文件下来(jvm内存快照)
生成Dump文件,JVM启动时添加参数:
#出现 OOME 时生成堆 dump:
-XX:+HeapDumpOnOutOfMemoryError
#生成堆文件地址:
-XX:HeapDumpPath=/home/xxx/logs/
然后点击文件打开 jprofile 工具分析
手动jump文件
jmap -dump:live,format=b,file=myjmapfile.hprof 19570
见: https://www.cnblogs.com/kaibindirver/p/15873483.html
但是下载下来的文件没有像上面那样找到内存溢出的线程
但是可以追踪内存里的存放对象找到造成内存溢出对应的方法和第几行代码导致
实时监控
https://blog.csdn.net/qq_36908872/article/details/127122915