java 内存溢出-与gc
Posted 知行合一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 内存溢出-与gc相关的知识,希望对你有一定的参考价值。
参考: https://www.jianshu.com/p/ddbd1e229c4c?from=groupmessage
感谢原作者
在日常中我们经常遇到这样的错误:java.lang.OutOfMemoryError: Java heap space。
但是除了heap space 的OutOfMemoryError,还有其它几种OutOfMemoryError情况。今天我们就来了解一下:
1、java.lang.OutOfMemoryError: Java heap space。
这是因为虚拟机堆的空间所剩不多。当准备创建的对象需要的内存已经超过虚拟机堆所剩的空间。虚拟机会尝试通过full GC来回收内存,如果不行的话,就会抛出OutOfMemoryError。
导致OutOfMemoryError异常的常见原因有以下几种:
【1】内存中加载的数据量过于庞大,如一次性从DB取出过多数据;
【2】集合类中有对象的引用,使用完后未清空,使得JVM不能回收;
【3】代码中存在死循环或循环产生过多重复的对象实体;
【4】启动参数内存值设定的过小。
但是除了heap space 的OutOfMemoryError,还有其它几种OutOfMemoryError情况。今天我们就来了解一下:
1、java.lang.OutOfMemoryError: Java heap space。
这是因为虚拟机堆的空间所剩不多。当准备创建的对象需要的内存已经超过虚拟机堆所剩的空间。虚拟机会尝试通过full GC来回收内存,如果不行的话,就会抛出OutOfMemoryError。
导致OutOfMemoryError异常的常见原因有以下几种:
【1】内存中加载的数据量过于庞大,如一次性从DB取出过多数据;
【2】集合类中有对象的引用,使用完后未清空,使得JVM不能回收;
【3】代码中存在死循环或循环产生过多重复的对象实体;
【4】启动参数内存值设定的过小。
作者:VIPSHOP_FCS
链接:https://www.jianshu.com/p/ddbd1e229c4c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
以上是关于java 内存溢出-与gc的主要内容,如果未能解决你的问题,请参考以下文章
Java虚拟机6:垃圾收集(GC)-1(内存溢出和内存泄漏的区别)
实战 - 分析java项目线上内存泄漏内存溢出频繁GC的原因
实战 - 分析java项目线上内存泄漏内存溢出频繁GC的原因