内存溢出

内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于 虚拟机能提供的最大内存。为了解决Java中内存溢出问题,我们首先必须了解 Java是如何管理内存的。Java的 内存管理就是对象的分配和释放问题。在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(GarbageCollection,GC)完成的,程序员不需要通过调用GC函数来释放内存,因为不同的JVM实现者可能使用不同的算法管理GC,有的是内存使用到达一定程度时,GC才开始工作,也有定时执行的,有的是中断式执行GC。但GC只能回收无用并且不再被其它对象引用的那些对象所占用的空间。 Java的内存垃圾回收机制是从程序的主要运行对象开始检查引用链,当遍历一遍后发现没有被引用的孤立对象就作为垃圾回收。
引起内存溢出的原因有很多种,常见的有以下几种:
 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
 代码中存在死循环或循环产生过多重复的对象实体;
 使用的 第三方软件中的 BUG
 启动参数设定的过小;
 
打个比方:
溢出:你打开画本,画啊画,画满了,就画到桌子上了
泄漏:你打开画本,画一页又一页,突然发现有一页被人画过了...
 

转载于:https://www.cnblogs.com/wangym/p/8043220.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值