本文为翻译的文章,作者PANKAJ,原文:

https://www.journaldev.com/21010/java-lang-outofmemoryerror-java-heap-space

当JVM无法分配内存来创建一个对象的时候,java.lang.OutOfMemoryError就被抛出。java.lang.OutOfMemoryError是一种Error并且在运行的时候发生。

java.lang.OutOfMemoryError

就像名称所表明的,当java运行时内存不足的时候,就会发生OutOfMemoryError。在这种情况下,垃圾收集器不能释放程序所需的更多空间,从而导致错误被抛出。

有两种主要原因导致java.lang.OutOfMemoryError:

1. 糟糕的编码 -- 死循环,没有关闭资源以释放内存等等

2. 内存不足 -- java运行的时候所需的内存不足

Java OutOfMemoryError – 糟糕编程示例

我们来看看会抛出以下异常的样例代码:java.lang.OutOfMemoryError: Java heap space,因为这个程序进入了死循环,对象被不断创建但没有被回收。所以JVM最终会耗尽内存。

当上面的代码被执行,一些时间后会抛出以下的异常:

这是一个糟糕编程的示例,好消息是,异常堆栈清楚地给我们指明错误发生的代码位置。然而有时候问题可能是在程序的其他地方,在这种情况下,我们需要象VisualVM这样的java剖析工具来找到哪个地方被分配了最多的内存以及如何来优化它。

Java OutOfMemoryError – 内存不足示例

我们来看看另外一个造成OutOfMemoryError的例子,因为我们没有正确地分配程序所需要的足够的内存。

当我们把JVM的最大内存限制为32MB来运行以上程序的时候,来看看发生了什么。

正如我们看到的,程序没有任何问题,只是我们以较低的内存来运行它。我们尝试把JVM内存从256MB增加到512MB来解决OutOfMemoryError。

当我们提供了足够的内存,这个程序运行得很好。

增加JVM内存是解决这个问题的快速办法,除非是运行在内存非常低的环境上面。如果你已经运行在较高的JVM内存上面,比如2GB或者更多,那么你应该检查程序代码来优化它,观察thread dump和java剖析工具的输出,以便找出你的程序为什么需要那么多内存的原因,以及能否降低所需要的内存。

java heap space 解决方法_内存溢出错误:java堆空间相关推荐

  1. java heap space 什么意思_java内存溢出之Java heap space

    作为一个java程序员,大家都应该认识JVM.JVM作为java的核心,实在太重要了.而内存溢出又是程序员常遇到的错误之一,如果你对JVM的原理足够了解,那么解决这样的问题就不在是一件困难的事情. 关 ...

  2. linux java heap space_Linux tomcat9 java.lang.OutOfMemoryError: Java heap space 解决方法

    错误 tomcat9 出现这样的错误日志,可能会造成tomcat挂掉,这是由于可使用内存不足造成的. 01-May-2020 12:31:09.411 SEVERE [https-jsse-nio-4 ...

  3. java.lang.OutOfMemoryError: Java heap space解决方法

    java.lang.OutOfMemoryError: Java heap space解决方法 参考文章: (1)java.lang.OutOfMemoryError: Java heap space ...

  4. memory java heap_java.lang.OutOfMemoryError: Java heap space解决方法

    //首先检查程序有没有限入死循环 这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的.第一次出现这样的的问题以后,引发了其他的问 ...

  5. java heap space解决方法

    在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError: Java ...

  6. java heap space flex_Flash builder 4内存优化之java heap space解决办法

    Flash Build 4编译慢.报java heap space 堆空间异常错误的解决方法: 1. 在安装路径下找到FlexBuilder.ini文件,进行编辑,加入如下参数 -vmargs -Xm ...

  7. java.lang.OutOfMemoryError: Java heap space 解决方法

    这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个. 1.可以在windows 更改系统环境变量 加上JAVA_OPTS=-Xms64m - ...

  8. Idea运行项目报错:java.lang.OutOfMemoryError: Java heap space 解决方法

    问题描述 使用Idea运行代码量比较多的项目时,会报错:java.lang.OutOfMemoryError: Java heap space 问题处理 这个显而易见是堆内存溢出,首先想到的时tomc ...

  9. java heap space 解决方法_Java静态方法/变量,非静态方法/变量的区别,今天一并帮你解决

    静态/非静态 方法/变量的写法 大家应该都明白静态方法/字段比普通方法/字段的写法要多一个static关键字,简单写下他们的写法吧,了解的可以直接略过 class Test{ // 静态变量 publ ...

最新文章

  1. Objective-C ,ios,iphone开发基础:NSDictionary(字典) 和 NSMutableDictionary
  2. 【第一章】 Spring概述 —— 跟我学Spring3
  3. 北京/上海内推 | 字节跳动AI Lab招聘NLP算法模型优化方向实习生
  4. idea使用MybatisCodeHelperPro逆向生成(亲测)
  5. 制作山寨智能机器人的一些记录 一 * 关于Arduino 以及外围模块的连接及使用...
  6. c语言程序设计现代方法快速排序,C语言实现快速排序改进版
  7. FunDA(7)- Reactive Streams to fs2 Pull Streams
  8. Rclone for Android – 云服务/网盘文件管理工具 Rclone 的 Android 客户端
  9. 计算机id不同于MAC,Gurman:Mac上的Face ID将在几年内出现
  10. neo4j 机器学习_知识图谱实战系列四:neo4j的介绍和使用
  11. mysqluuid去除横岗
  12. bzoj4171: Rhl的游戏
  13. 给兆芯出主意:开发一批新指令,交叉授权
  14. 前端视频截图的方法canvas.drawImage()
  15. js—封装原生AJAX
  16. D1、4CIF、CIF和QCIF的不同
  17. html隐藏safari地址栏,怎么隐藏 iOS Safari 打开网页时的地址栏和工具栏探索
  18. 搜狗浏览器安装插件(.crx)
  19. 独木舟上的旅行(贪心算法)
  20. 【UE4】如何使用Composite插件进行绿幕抠图

热门文章

  1. hadoop 命令行相关操作
  2. 程序员薪资怎么论高级还是初级_和程序员一样高薪,却过着清闲生活,测试员什么人都可做吗?...
  3. python从入门到放弃-Python数据分析从入门到放弃(十五)爬虫(番外)基金选取实例...
  4. python工资一般多少p-大神级Python工程师是怎么P图的,带你用Python玩转P图
  5. python经典程序实例-Python3经典100例(③)
  6. python编程例子-python编程例子
  7. python怎么读取中文文件-Python3 中文文件读写方法
  8. 开课吧9.9元学python靠谱吗-开课吧的python课程怎么样,值得报名吗?
  9. python零基础能学吗-零基础小白多久能学会python
  10. python是什么课程-教你python中什么是集合(一)