java内存泄露的意思是,你创建了一个大对象,而且java代码中这个对象已经没有用了,但是还是有引用持有这个对象,这个时候就发生了内存泄露。
这种问题一般heap dump出来看看哪些对象持有这个大对象,然后具体分析即可
内存泄漏在java中指,申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,而又不能被虚拟机分配给别人用。 可以使用heapdump分析下
java的内存泄漏和C系语言的内存泄露不一样。 c类的内存泄漏指的是有一块内存使用了没有被释放,而且句柄或指针也丢失了(以后也没法释放) java的内存泄漏指的是用完了内存后,这个内存被一些长效对象持有不释放,导致内存占用越来越大的问题,从这个角度来说,java存在内存泄漏的
内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。理论上来说,Java是有GC垃圾回收机制的,也就是说,不再被使用的对象,会被GC自动回收掉,自动从内存中清除。
但是,即使这样,Java也还是存在着内存泄漏的情况,java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。
原文链接:https://thinkwon.blog.csdn.net/article/details/104390752
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。