当内存溢出会抛出 java.lang.OutOfMemoryError: Java heap space 的异常,那这个时候怎样去分析到底哪里导致内存溢出呢?

我们可以通过在vm的参数, -XX:+HeapDumpOnOutOfMemoryError 记住这个理是大写XX。

当内存溢出后,显示

java.lang.OutOfMemoryError: Java heap space

Dumping heap to java_pid1034.hprof ...

Heap dump file created [136202426 bytes in 0.908secs]

Exceptionin thread "main"java.lang.OutOfMemoryError: Java heap space

at java.util.Arrays.copyOf(Arrays.java:3210)

at java.util.Arrays.copyOf(Arrays.java:3181)

at java.util.ArrayList.grow(ArrayList.java:261)

at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)

at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)

at java.util.ArrayList.add(ArrayList.java:458)

at test.a.Test.main(Test.java:11)

然后可以在项目下,找到上面所指的文件,这里的文件叫,java_pid1034.hprof

直接打开是无法知道里面是什么意思,所以需要eclipse提供的一些工具来进行分析, 可以在网上搜索Eclipse Memory Analysis,或者在Eclipse Market哪里搜索直接下载相关插件就可以了

下面来看看是怎样一个分析过程:

首先我们打开eclipse,双击项目下,刚才的分析文件,就可以打开分析编辑器,点击下图中的按钮,

在打开的树种可以看到,其中某一项会占据内存比较多的,如果继续展开,会发现,这里会告诉你,那一项会是占据内存的主要原因,这里可以清楚地看到,demo的这个对象,有很多,说明创建这个demo的对象,没有被回收

java内存溢出怎样查找代码_JVM - 内存溢出,问题查找相关推荐

  1. java gc堆中的分区_jvm内存各个区域详解

    内存区域划分 Java虚拟机所管理的内存区域分为如下部分:方法区.GC堆.虚拟机栈.本地方法栈.PC程序计数器. 其中方法区.GC堆是所有线程共享的:虚拟机栈.本地方法栈.PC程序计数器是各个线程独占 ...

  2. java死锁怎么用jvm调试_jvm 内存dump、gc查看、线程死锁,jmap、jstack、jstat

    1. jstat 这个命令对于查看Jvm的堆栈信息很有用.能够查看eden,survivor,old,perm等heap的capacity,utility信息 对于查看系统是不是有能存泄漏以及参数设置 ...

  3. Java 常见内存溢出异常与代码实现

    Java 堆 OutOfMemoryError Java 堆是用来存储对象实例的, 因此如果我们不断地创建对象, 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收, 那么当创建的 ...

  4. java 内存溢出 内存泄露_JVM——内存泄漏与内存溢出

    1.内存溢出 1.1 什么是Java的内存溢出? 在Java程序运行的过程中,经常会碰到以下错误:java.lang.OutOfMemoryError. 通俗讲,内存溢出是指程序在申请内存时,没有足够 ...

  5. java代码耗尽内存_有关Java内存溢出及内存消耗的小知识

    内存溢出原理: 我们知道,Java程序本身是不能直接在计算机上运行的,它需要依赖于硬件基础之上的操作系统和JVM(Java虚拟机). Java程序启动时JVM都会分配一个初始内存和最大内存给这个应用程 ...

  6. 46栈内存溢出、内存区域(程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区、直接内存、内存溢出)与内存溢出(对象实例化分析)

    46.什么情况下会发生栈内存溢出 46.1.Java 内存区域与内存溢出 46.1.1.内存区域 46.1.1.1.程序计数器 46.1.1.2.Java 虚拟机栈 46.1.1.3.本地方法栈 46 ...

  7. java 内存调优_JVM内存模型以及性能调优

    JVM 内存模型 JVM.png 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.分支.循环.跳转.异常处理.线程恢复等基础功能都需要依赖这个计数器来完成. ...

  8. java线程工作内存在栈中吗_JVM常见面试题解析

    前言 总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新. 1.什么情况下会发生栈内存溢出. 思路: 描述栈定义,再描述为什么会溢出 ...

  9. java上帝模块常见的情况_JVM上帝视角看JVM内存模型,分而治之论各模块详情详解...

    1. 上帝视角 [树看JVM] [图看JVM] 2. 分而治之 2.1 堆区 构成:堆区由新生代和老年代组成,新生代中包含伊甸区(Eden).幸存者区(survivor from .survivor ...

最新文章

  1. liunx复制备份命令,copy命令,liunx命令
  2. python会搞坏电脑吗_搞python,把原本php环境所需的libjpeg搞坏了
  3. 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新:涵盖140种语言组合
  4. Docker Swarm mode与滚动升级
  5. 解惑(一) ----- super(XXX, self).__init__()到底是代表什么含义
  6. 【转】学习笔记:GoogLeNet
  7. 六步实现Spring.NET 与 NHibernate 的整合
  8. iOS多任务:suspend VS terminate
  9. yocto rootfs 支持pam
  10. linux C 语言的 system
  11. zabbix监控tomcat服务
  12. 文献管理三剑客之Mendeley
  13. 【论文查重】常用论文写作查重润色网站
  14. 使用python和requests爬取世界卫生组织vigiaccess不良反应数据库
  15. 【算法设计与分析】图搜索算法的应用
  16. UCF Local Programming Contest 2018题解
  17. Unity SKFramework框架(二十四)、Avatar Controller 第三人称控制
  18. 当阿里云服务器 ECS 访问不了公网 ip可能存在的原因以及如何解决的办法
  19. 测试用例及其注意事项
  20. 2021.1.22平安科技面经--算法工程师实习生

热门文章

  1. HALCON示例程序dem_trees.hdev提取树
  2. windows系统环境变量过长解决方案(PATH too long installer unable to modify Path)
  3. This is Me!——回顾第一个项目的前前后后
  4. 我的世界1.7.10java32位_我的世界1.7.10中文版
  5. 计算机控制学什么,计算机控制技术专业介绍
  6. creator图片循环显示_CocosCreator背景图循环播放
  7. Cs231n课堂内容记录-Lecture 5 卷积神经网络介绍
  8. linux常用命令:top 命令
  9. js 类数组arguments详解
  10. VA Code编写html(1)