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

相关推荐
snow@li1 天前
Java:理解 Gradle / 后端项目的管家 / 打包SpringBoot 应用 / 完成编译、下载依赖、运行测试、打包 JAR/WAR / 速查表
java
云烟成雨TD1 天前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring
zfoo-framework1 天前
[修改代码使用]codex官方app中使用中转(不需要cc-switch) 1.config.toml 2.sk方式登录
java
逍遥德1 天前
MQTT教程详解-05.SpringBoot集成mqtt client 性能分析
java·spring boot·spring·mt
云烟成雨TD1 天前
Spring AI 1.x 系列【54】Retry 机制分析
java·人工智能·spring
weixin_523185321 天前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
点燃大海1 天前
SpringAI构建智能体
java·spring boot·spring·springai智能体
xier_ran1 天前
【infra之路】02_RadixAttention与KV_Cache管理
java·spring boot·spring
黑马师兄1 天前
RAG混合检索深度解析:让AI真正找到你要的内容
java·人工智能·ai·agent·rag·ai-native
码客日记1 天前
Spring Boot 配置文件敏感信息加密(Jasypt 企业级完整方案)
java·spring boot·git