理论上Java由垃圾回收机制GC,不会存在内存泄漏问题;
但在实际项目开发的时候,就会经常遇到内存泄漏的问题。可能会存在没有用处但是还存在在内存空间的对象,这些对象不能被GC回收,所以这些对象的堆积也会使得内存造成泄漏。比如hibernate的session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些兑现的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭(close)或清空(flush)一级缓存就可能导致内存泄漏。
在Java语言中,判断一个内存空间是否符合垃圾回收的标准有两个:
给对象赋予了空值null,以后再没有被使用过;
给对象赋予了新值,重新分配了内存空间。
一般来讲,内存泄漏主要有两种情况:
在堆中申请了空间没有被释放;
对象已不再被使用,但还仍然在内存中保留着。
垃圾回收机制的引入可以有效地解决第一种泄漏情况;而对于第二种,垃圾回收机制则无法保证不再使用的对象会被释放。因此Java语言中的内存泄漏主要指第二种情况。
ava中,是否有内存泄漏问题?
最新推荐文章于 2024-08-22 09:34:22 发布