2.通过jmap监控内存使用情况
2.1 监控堆内存 jamp -heap 12840
2.2 监控内存中对象的数量及其大小
查看所有对象的数量以及大小包括类型:jmap -histo 14116 | more
查看所有对象的数量以及大小包括类型:jmap -histo:live 14116 | more
2.3 通过jmap导出堆内存使用情况的文件
2.4 通过jhat查看dump文件并且进行分析,启动一个HTTP端口进行访问,通过该端口可以查看到整个应用程序所使用的的所有对象的情况,提供OQL进行检索
2.5 页面访问
3.使用MAT分析工具 在工具中可以查看到对象数量以及内存使用的情况,当然可以分析出可能出现问题
3.1 解压mat分析工具双击
3.2 双击后效果
3.3 点击overview
4. 模拟内存溢出
4.1 编写代码
public static void main(String[] args) { List<Object> objectList=new ArrayList<>(); for (int i=0;i<10000000;i++){ String str=""; for (int j=0;j<1000;j++){ str+= UUID.randomUUID().toString(); } objectList.add(str); } System.out.println("添加数据成功~"); }
4.2 设置VM options参数 -Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError
4.3 控制台效果
4.4 生成一个文件
4.5 使用MAT工具打开刚刚生成的文件查看
4.6 数组内存储了大量的字符串
原文地址:https://www.cnblogs.com/1314Justin/p/12411321.html
时间: 2024-10-08 01:21:43