内存泄漏场景
使用集合
集合释放掉了,但时集合中还持有某些对象的引用,造成这些引用不能被及时回收
静态属性导致内存泄漏
会导致内存泄露的一种情况就是大量使用static静态变量。在Java中,静态属性的生命周期通常伴随着应用整个生命周期(除非ClassLoader符合垃圾回收的条件)。
未关闭的资源
无论什么时候当我们创建一个连接或打开一个流,JVM都会分配内存给这些资源。比如,数据库链接、输入流和session对象。
使用finally或者try-with-resources
不当的equals方法和hashCode方法实现
没有equals方法和hashCode方法,每次都创建新的对象
外部类引用内部类
这种情况发生在非静态内部类(匿名类)中,在类初始化时,内部类总是需要外部类的一个实例。
每个非静态内部类默认都持有外部类的隐式引用。如果在应用程序中使用该内部类的对象,即使外部类使用完毕,也不会对其进行垃圾回收。
改为使用静态内部类
使用ThreadLocal
集合释放掉了,但时集合中还持有某些对象的引用,造成这些引用不能被及时回收
静态属性导致内存泄漏
会导致内存泄露的一种情况就是大量使用static静态变量。在Java中,静态属性的生命周期通常伴随着应用整个生命周期(除非ClassLoader符合垃圾回收的条件)。
未关闭的资源
无论什么时候当我们创建一个连接或打开一个流,JVM都会分配内存给这些资源。比如,数据库链接、输入流和session对象。
使用finally或者try-with-resources
不当的equals方法和hashCode方法实现
没有equals方法和hashCode方法,每次都创建新的对象
外部类引用内部类
这种情况发生在非静态内部类(匿名类)中,在类初始化时,内部类总是需要外部类的一个实例。
每个非静态内部类默认都持有外部类的隐式引用。如果在应用程序中使用该内部类的对象,即使外部类使用完毕,也不会对其进行垃圾回收。
改为使用静态内部类
使用ThreadLocal
全部评论
相关推荐
查看17道真题和解析 点赞 评论 收藏
分享
02-24 19:45
西南大学 后端工程师
程序员小白条:简历写的有点太多了,一般两页是实习经历比较多的情况下,要么自己有一些有影响力的开源项目,如果你走软件,硬件没必要实习,学校安排总是没区分度的,央国企最好有中大厂实习,另外学历比较重要,不是都要求硕士的,技术会比互联网要求低一些 点赞 评论 收藏
分享