HeapOOM && jvisualvm.exe

复制代码
Heap OOM(堆内存溢出)指 Java 应用因堆内存不足抛出 java.lang.OutOfMemoryError: Java heap space

jvisualvm.exe 是 JDK 自带的图形化工具(位于 $JAVA_HOME/bin/),用于加载并分析该文件定位内存泄漏。‌‌

简单理解,实操,每个人都是不一样,或许我这样的方式更加通俗易懂

package jvm;

import java.util.ArrayList;
import java.util.List;

/**
 * 
java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapdump.hprof HeapOOMDemo


有时候字符集乱码,不行的话吧,注释删除下哈
 * 
 * @author ZengWenFeng
 * @date 2019.03.01
 * @mobile 13805029595
 * @email 117791303@qq.com
 */
public class HeapOOMDemo
{
	// 每次创建一个1MB的byte数组,强引用保存到List中,无法被GC回收
	public static void main(String[] args)
	{
		List<byte[]> list = new ArrayList<byte[]>();
		int count = 0;
		while (true)
		{
			list.add(new byte[1024 * 1024]); // 1MB/个
			System.out.println("已创建对象数:" + (++count) + " MB");
		}
	}
}
复制代码
heapdump.hprof
复制代码
Microsoft Windows [版本 10.0.19045.6216]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>cd C:\Users\Administrator\Desktop

C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>javac HeapOOMDemo.java
HeapOOMDemo.java:18: 错误: 编码GBK的不可映射字符
        // 姣忔鍒涘缓涓?涓?1MB鐨刡yte鏁扮粍锛屽己寮曠敤淇濆瓨鍒癓ist涓紝鏃犳硶琚獹C鍥炴敹
                  ^
HeapOOMDemo.java:18: 错误: 编码GBK的不可映射字符
        // 姣忔鍒涘缓涓?涓?1MB鐨刡yte鏁扮粍锛屽己寮曠敤淇濆瓨鍒癓ist涓紝鏃犳硶琚獹C鍥炴敹
                    ^
HeapOOMDemo.java:25: 错误: 编码GBK的不可映射字符
                        list.add(new byte[1024 * 1024]); // 1MB/涓?
                                                                 ^
HeapOOMDemo.java:26: 错误: 编码GBK的不可映射字符
                        System.out.println("宸插垱寤哄璞℃暟锛?" + (++count) + " MB");
                                                      ^
4 个错误

C:\Users\Administrator\Desktop>javac -encoding UTF-8 HeapOOMDemo.java

C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./heapdump.hprof HeapOOMDemo
Created 1 MB objects
Created 2 MB objects
Created 3 MB objects
Created 4 MB objects
Created 5 MB objects
Created 6 MB objects
Created 7 MB objects
Created 8 MB objects
Created 9 MB objects
Created 10 MB objects
Created 11 MB objects
Created 12 MB objects
Created 13 MB objects
Created 14 MB objects
Created 15 MB objects
Created 16 MB objects
Created 17 MB objects
java.lang.OutOfMemoryError: Java heap space
Dumping heap to ./heapdump.hprof ...
Heap dump file created [19205389 bytes in 0.009 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at HeapOOMDemo.main(HeapOOMDemo.java:9)

C:\Users\Administrator\Desktop>

JVM 结构图 2019

相关推荐
文丑颜不良啊1 小时前
LeetCode1341~1360题目解析
java·leetcode
坚定的共产主义生产设备永不宕机1 小时前
服务器从裸机开始搭建ESXI虚拟机
linux·服务器·网络
刚入门的大一新生1 小时前
Linux-线程封装
linux·运维·服务器
god_cvz2 小时前
实践:Linux环境构建CTB工具(cesium-terrain-builder)
linux·gis·ctb
QianhangQianping2 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
Android系统攻城狮2 小时前
Linux FFmpeg深度解析之av_dump_format调用流程与实战(十一)
linux·运维·服务器·ffmpeg·1024程序员节·音视频进阶
海绵宝宝转agent2 小时前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
SunnyDays10112 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java·word
SunnyDays10112 小时前
Java 为 Word 添加页码:隐藏封面页码、从指定页开始编号、奇偶页页码设置等
java·word·页码
开源推荐官2 小时前
多门店 O2O 商城选型复盘:从开发视角对比主流开源系统
java·架构·开源·php