读书笔记-深入理解JVM虚拟机-1.OOM初探
来源:互联网 发布:阿里云自建数据库 编辑:程序博客网 时间:2024/05/21 22:54
Java堆OOM(Out-Of-Memory)异常
运行如下程序,爆出异常 java.lang.OutOfMemoryError: Java heap space
分析:
1.内存配置
-Xms20m 堆的大小是20M
-Xmx20m 堆最大可以扩展到20M,由于堆的大小本来就是20M 所以该堆不可以扩展
-XX:+HeapDumpOnOutOfMemoryError 当出现OutOfMemory异常的时候导出堆文件
OOMObject用来占用空间,用一个List来存储OOMObject以保证我们每个生成的OOMObject对象可以和GCRoot引用链连接起来
这样的话就会导致OOM异常。因为每个对象都是有用的(都是可以和GCRoot连接起来的)
分析OOM问题的一般步骤如下
1.发生OOM了
2.判断发生OOM的位置的对象是否应该是该存活的
3.如果OOM位置的对象是不应该存活的而且发生了OOM异常,那就是我们的程序写的有问题
4.如果OOM的位置的对象是应该存活的但是却发生了OOM异常,那我们就应该适当调整JVM参数了
关于当前这个例子:
很明显我们用的是死循环一直创建对象,并且用List保存持有对象的实例,导致了JVM无法回收创建的对象,所以产生了OOM问题
运行如下程序,爆出异常 java.lang.OutOfMemoryError: Java heap space
- /**
- * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
- * @author zzm
- */
- public class HeapOOM {
- static class OOMObject {
- }
- public static void main(String[] args) {
- List<OOMObject> list = new ArrayList<OOMObject>();
- while (true) {
- list.add(new OOMObject());
- }
- }
- }
分析:
1.内存配置
-Xms20m 堆的大小是20M
-Xmx20m 堆最大可以扩展到20M,由于堆的大小本来就是20M 所以该堆不可以扩展
-XX:+HeapDumpOnOutOfMemoryError 当出现OutOfMemory异常的时候导出堆文件
OOMObject用来占用空间,用一个List来存储OOMObject以保证我们每个生成的OOMObject对象可以和GCRoot引用链连接起来
这样的话就会导致OOM异常。因为每个对象都是有用的(都是可以和GCRoot连接起来的)
分析OOM问题的一般步骤如下
1.发生OOM了
2.判断发生OOM的位置的对象是否应该是该存活的
3.如果OOM位置的对象是不应该存活的而且发生了OOM异常,那就是我们的程序写的有问题
4.如果OOM的位置的对象是应该存活的但是却发生了OOM异常,那我们就应该适当调整JVM参数了
关于当前这个例子:
很明显我们用的是死循环一直创建对象,并且用List保存持有对象的实例,导致了JVM无法回收创建的对象,所以产生了OOM问题
0 0
- 读书笔记-深入理解JVM虚拟机-1.OOM初探
- 读书笔记-深入理解JVM虚拟机-1.OOM初探
- 读书笔记-深入理解JVM虚拟机-1.JVM-Stack造成的OOM的理解
- JVM 深入理解Java虚拟机读书笔记
- 深入理解JVM 读书笔记
- 深入理解JVM--读书笔记
- 《深入理解jvm》读书笔记
- 深入理解JVM读书笔记三: 虚拟机类加载机制
- 读书笔记-《深入理解Java虚拟机》-JVM内存模型
- 深入理解java虚拟机读书笔记(一): jvm的分类
- 深入理解JVM虚拟机--读书笔记(第二章)
- 《深入理解java虚拟机》读书笔记——jvm内存区域
- 深入理解JVM虚拟机
- 深入jvm虚拟机内存区域与OOM
- 《深入理解java虚拟机》读书笔记——OOM发生的原因及解决方案
- 深入理解 Java 虚拟机-jvm
- 《深入理解Java虚拟机》读书笔记
- 深入理解java虚拟机读书笔记
- 基于NodeJS的全栈式开发(基于NodeJS的前后端分离)
- jQuery图表插件Flot中文文档
- 添加源文件、头文件编译程序,报error LNK2001: unresolved external symbol
- ios数据类型、函数面向对象
- MFC、WTL、WPF、wxWidgets、Qt、GTK 各有什么特点
- 读书笔记-深入理解JVM虚拟机-1.OOM初探
- 深入理解String、StringBuffrt、StringBuilder
- 编程法则DRY(Don't repeat yourself)
- java ipone 微信昵称emoji表情保存失败 无法存入数据库
- 设置hr元素颜色
- Java 开发者如何入门 Node.js 英文原文:Getting Started with Node.js for the Java Developer
- windows操作系统查看开关机时间记录
- codeforcesC. Amr and Chemistry
- swift2 operators