Java~内存泄漏与内存溢出的区别和解决方案

本文详细介绍了Java中内存泄漏和内存溢出的概念,包括内存泄漏可能导致内存溢出的原因。通过示例代码展示了两种情况,并分析了栈和堆内存溢出的原因。提出了解决方案,如调整JVM参数、使用内存监控工具和优化代码。最后分享了一线大厂Java面试相关学习资源。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 出现内存溢出或内存泄露的解决方案

  • 如何避免出现内存泄露

对比


  • 内存泄露 : 指程序在申请内存后,无法释放已申请的内存空间(指分配出去的内存无法被gc回收)。一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

  • 内存溢出 指程序要求的内存超出了系统所能分配的范围,出现out of memory;比如申请一个long类型,但给了它一个int才能存放的数,就会出现内存溢出,或者是创建一个大的对象,而堆内存放不下这个对象,这也是内存溢出。对于内存溢出在Java中有俩种溢出, 一个是栈溢出, 一个是堆溢出, 其本质是一样的都是由于内存不够造成的

因此,我们从上面也可以推断出内存泄露可能会导致内存溢出。内存溢出会抛出异常,内存泄露不会抛出异常,大多数时候程序看起来是正常运行的。

内存溢出和内存泄露的案例


public class demo {//内存泄露案例

public static void main(String[] args) {

List v =

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值