内存溢出和内存泄漏

内存溢出和内存泄漏

内存溢出 out of memory

指程序在申请内存时,没有足够的内存空间使用,假如我申请了一个Integer的数是4位的, 但我放入的是一个Long类型的8位数据, 会产生内存的溢出.

内存泄漏 memory leak

这是指程序在申请了内存后,无法将其释放空间,一次程序的内存泄漏可能不会造成太大的损害,但内存泄漏堆积后果是严重的,因为无论多少内存,始终将会被占用光

内存泄漏的四种发生方式:
  1. 常发性内存泄漏

    发生内存泄漏的代码多次会被执行, 每次执行就会有一次内存泄

  2. 偶发性内存泄漏

    发生内存泄漏只在某种情况下会发生,也可能在特定的情况下会经常发生,所以在许多环境的都要对内存泄漏测试

  3. 一次性内存泄漏

    内存泄漏的代码只会被执行一次,例如new一个对象时分配内存,最后未被回收

  4. 隐式内存泄漏

    隐式内存泄漏在服务器中比较可怕,它指的是程序运行时不断的分配内存,最终结束程序时释放,但是对于服务器来说,一开会开很久,而不及时释放内存最终会导致崩盘. 严格来说这不是内存泄漏

内存溢出的原因和解决方法
原因:
  1. 内存数据量一次加载过大,例如我电脑只剩余8G内存,你给我9G,会发生内存溢出,或者一次性从数据库取出过多数据
  2. 代码有死循环,或循环产生太大的内存消耗
  3. 有使用完成的引用未被清楚
  4. 内存启动参数值启动小
  5. BUG
解决方法
  1. 修改内存启动参数,既JVM启动参数,增加内存
  2. 使用内存查看内存使用情况
  3. 走查代码发现内存溢出的地方
  4. 日志

内存泄漏的解决办法一般只有走查代码,若是自用电脑小项目无所谓,若是服务器内存泄漏就会要挨打的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值