内存飙升问题定位
目录
- 一、内存相关命令
- 二、内存飙升问题定位Demo
一、内存相关命令
本地启动一个web服务,用 jps 命查看对应进程。

1.查看内存信息,实例个数以及占用内存大小。
jmap -histo PID > ./log.txt

打开文件部分内容如下
| 字段 | 说明 |
|---|---|
| num | 序号 |
| instances | 实例数量 |
| bytes | 占用空间大小 |
| class name | 类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][] |

2.查看堆信息
jmap -heap PID

堆内存 dump
jmap ‐dump:format=b,file=eureka.hprof PID


也可以设置内存溢出自动导出dump文件,但是要注意内存很大的时候,可能会导不出来。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./ (路径)
二、内存飙升问题定位Demo
测试Demo
public class User {private int id;private String name;byte[] a = new byte[1024*100];public User(){}public User(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
public class OOMDumpTest {public static List
JVM参数设置
‐Xms10M ‐Xmx10M ‐XX:+PrintGCDetails ‐XX:+HeapDumpOnOutOfMemoryError ‐XX:HeapDumpPath=D:\test\jvm.dump

将生成的 jvm.dump 文件装入 jvisualvm 命令工具,通过可视化界面可以看出问题出现在哪。

文章仅供学习交流,侵权联系删除。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
