《深入理解java虚拟机》-java堆溢出笔记
2017-04-19 23:07
134 查看
《深入理解java虚拟机》-java堆溢出笔记
本人用的idea工具来演示java堆溢出,代码如下:
IDEA设置JVM参数:
将堆最小值 -Xms参数与最大值 -Xmx参数 设置为一样大可以避免堆自动扩展,通过 参数-XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机出现内存溢出异常时dump出当前的内存堆转储快照以便事后分析。
上述代码执行后会生成 .hprof文件,通过IBM HeapAnalyzer工具分析如下:
红色区域占比最高,结合代码再查问题就会容易的多。
另外书中说到内存泄露和内存溢出的问题,打个比方来区分:
内存泄露:学校有10个篮球,我不断的借,就是不还,最终会由内存泄漏造成内存溢出。
内存溢出:我要借11个篮球,可是学校只有10个,最终会造成内存溢出。
本人用的idea工具来演示java堆溢出,代码如下:
import java.util.ArrayList; import java.util.List; /** * Description:JAVA堆内存溢出 * Author: wangfeng * Date: 17/4/19 * Time: 下午10:15 */ public class HeapOOM { static class OOMObject{ } public static void main(String[] args) { List<OOMObject> list = new ArrayList<OOMObject>(); while (true) { list.add(new OOMObject()); } } }
IDEA设置JVM参数:
将堆最小值 -Xms参数与最大值 -Xmx参数 设置为一样大可以避免堆自动扩展,通过 参数-XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机出现内存溢出异常时dump出当前的内存堆转储快照以便事后分析。
上述代码执行后会生成 .hprof文件,通过IBM HeapAnalyzer工具分析如下:
红色区域占比最高,结合代码再查问题就会容易的多。
另外书中说到内存泄露和内存溢出的问题,打个比方来区分:
内存泄露:学校有10个篮球,我不断的借,就是不还,最终会由内存泄漏造成内存溢出。
内存溢出:我要借11个篮球,可是学校只有10个,最终会造成内存溢出。
相关文章推荐
- 深入理解java虚拟机之虚拟机执行子系统笔记
- 深入理解Java虚拟机——程序编译与代码优化
- 《深入理解JAVA虚拟机》--第二章 Java内存溢出异常
- 《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器
- 深入理解java虚拟机(三):String.intern()-字符串常量池
- 《深入理解JAVA虚拟机》笔记1
- 《深入理解Java虚拟机》学习笔记之字节码执行引擎
- 深入理解java虚拟机(十三) Java 即时编译器JIT机制以及编译优化
- 《深入理解java虚拟机》自动装箱拆箱实例
- 深入理解Java虚拟机笔记---垃圾收集器
- 深入理解java虚拟机-第13章-线程安全与锁优化
- 《深入理解Java虚拟机》笔记 第三章 内存分配与回收策略
- 《深入理解Java虚拟机》:HotSpot虚拟机内的即时编译器
- 《深入理解java虚拟机》之内存模型与安全
- 深入理解Java虚拟机----(一)走近java
- 深入理解Java虚拟机——认知Java
- 深入理解JAVA虚拟机(概念泛谈)
- 《深入理解Java虚拟机》读后总结(一)JVM内存模型
- 《深入理解Java虚拟机》调优案例分析与实战
- 深入理解JAVA虚拟机(一):内存区域与内存溢出异常