关注
1、静态集合类引起内存泄漏
像HashMap、LinkedList、Vector等的使用最容易出现内存泄露。如果这些容器为静态的,那么它们的生命周期与程序一致,容器中的对象Object在程序结束之前将不能被释放,因为它们一直被Vector等引用着,造成内存泄漏。长生命周期的对象持有短生命周期对象的引用,尽管短生命周期的对象不再使用,但是因为长生命周期对象持有它的引用而导致不能被回收。
2、当集合里面的对象属性被修改后,再调用remove()方法时不起作用。
3、***
在释放对象的时候却没有去删除这些***,增加了内存泄漏的机会。
4、各种连接
比如数据库连接(dataSourse.getConnection()),网络连接(socket)和io连接。在对数据库进行操作的过程中,首先需要建立与数据库的连接,当不再使用时,需要显式的调用close方法来释放与数据库的连接,否则是不会自动被GC回收的。只有连接被关闭后,垃圾回收器才会回收对应的对象。否则,如果在访问数据库的过程中,对Connection、Statement或ResultSet不显性地关闭,将会造成大量的对象无法被回收,造成内存泄漏。
5、内部类和外部模块的引用
如果一个外部类的实例对象的方法返回了一个内部类的实例对象,这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持有外部类的实例对象,这个外部类对象将不会被垃圾回收,造成内存泄露。
6、单例模式
不正确使用单例模式。单例对象在初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部的引用,那么这个对象将不能被JVM正常回收,造成内存泄漏。
7、变量不合理的作用域
一个变量的定义的作用范围大于其使用范围,很有可能会造成内存泄漏。如果没有及时地把对象设置为null,可能导致内存泄漏。
5、改变哈希值
当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象,造成内存泄露。
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
- 1... HR面,到底该准备些啥(附核心问题回答思路)1.8W
- 2... 除了卷大厂,还有其他出路吗。。。4559
- 3... 懂车帝二面 2025.10.11 1h32min4291
- 4... 双非秋招timeline供参考(腾讯字节阿里快手美团)3316
- 5... 小红书一面面经2947
- 6... 牛牛求救🆘,不敢梭哈后端第二技能点怎么搭配2891
- 7... 10.12pdd笔试大鸭蛋2575
- 8... 第一次去北京那么远的地方实习,心里总是不安,大家会有这种感觉吗?2388
- 9... 10.12 拼多多技术岗笔试 第二题 求教2388
- 10... 华为10月10号考的手写LSTM被压中了1971
正在热议
更多
# 面包vs爱情,怎么选? #
7658次浏览 89人参与
# 职场新人体验 #
83845次浏览 595人参与
# 爱玛科技集团求职进展汇总 #
27122次浏览 195人参与
# 实习生如何通过转正 #
104192次浏览 1394人参与
# tplink提前批进度交流 #
207033次浏览 1506人参与
# 安克创新求职进展汇总 #
53885次浏览 528人参与
# 深信服秋招来了 #
279677次浏览 2915人参与
# Tplink求职进展汇总 #
180359次浏览 912人参与
# 秋招结束之后的日子 #
86207次浏览 976人参与
# 面试被问“你的缺点是什么?”怎么答 #
154660次浏览 2146人参与
# 贝壳求职进展汇总 #
34532次浏览 184人参与
# 硬件/芯片公司岗位评价 #
8315次浏览 28人参与
# Offer比较,你最看重什么? #
215208次浏览 1389人参与
# 互联网公司爆料 #
144656次浏览 708人参与
# 招银网络求职进展汇总 #
168329次浏览 992人参与
# 联影求职进展汇总 #
43033次浏览 284人参与
# 华为海思工作体验 #
29052次浏览 120人参与
# 新凯来求职进展汇总 #
49723次浏览 126人参与
# 材料进Fab厂真的劝退吗? #
56092次浏览 204人参与
# 五一之后,实习真的很难找吗? #
88018次浏览 556人参与
# 应届生,你找到工作了吗 #
68995次浏览 459人参与
# 总结:哪家公司最喜欢泡池子 #
144036次浏览 520人参与