当前位置:首页 > 内存 > 正文

java内存泄漏原因

  • 内存
  • 2024-08-28 22:22:14
  • 6350

一、Java在什么情况下会内存溢出1被生命周期极长的集合类不当持有,据说这是Java内存泄漏的主要原因。
这些集合类的生命周期通常极其长,是辅助管理对象。一个业务事务完成后,如果不主动从中清除某个业务对象,这个集合就会吃掉越来越多的内存。
2作用域定义不正确。这很简单。方法的局部变量定义为类变量、类静态变量等。
3.没有添加finally{}来在发生异常时释放某些资源。这在JDBC时代也很常见。
4还有其他原因我理解不深,比如:Swing中的Listener没有显式移除;内部类保存对外部对象的隐式引用;终结器导致关联对象没有及时清除等。
二、java什么是内存泄漏?内存泄漏是指无用对象(不再使用的对象)继续占用内存或者无用对象的内存无法及时释放,
造成浪费
如果长寿命对象持有对短寿命对象的引用,则可能会发生内存泄漏。
尽管不再需要短寿命对象,
由于持久性,,周期对象持有其引用,无法回收
这是Java中出现内存泄漏的场景内存溢出,内存溢出超出最大值。使用范围。例如,系统分配给您1GB内存。如果你用完了还想用,系统不会分配给你,就会满了。