java知道释放内存会不会误把有用的内存释放了?
Java系统自动对内存进行扫描,自动释放长期不用的内存空间,避免了内存泄露那java在释放内存时会不会误把有用的内存释放了?...
Java系统自动对内存进行扫描,自动释放长期不用的内存空间,避免了内存泄露
那java在释放内存时会不会误把有用的内存释放了? 展开
那java在释放内存时会不会误把有用的内存释放了? 展开
5个回答
展开全部
有可能,但是没有什么影响
首先,根本不存在有用的内存这个说法。简单来说,可以把内存看成一个巨大的缓存(相较于真正的cache而言),内存中的一切数据都是暂时的,程序在运行时成为进程,占用内存空间,进程生命周期结束后是大多是会释放内存空间的。为了提高运行速度,少数进程会较长时间的占用内存。
java提供了很多方法来判断内存空间是否可以被释放掉,但是一处已分配的内存空间对操作者是否有用java无法完全做出正确的判断,比如一个局部变量,在方法结束后是一定会被释放的,即便你会很频繁的调用并希望它能一直保有内存。
没有影响是因为内存只是一个缓存,释放了再重新分配就好,只不过是速度慢了些,任何检测的算法都只能是尽量提高速度。
首先,根本不存在有用的内存这个说法。简单来说,可以把内存看成一个巨大的缓存(相较于真正的cache而言),内存中的一切数据都是暂时的,程序在运行时成为进程,占用内存空间,进程生命周期结束后是大多是会释放内存空间的。为了提高运行速度,少数进程会较长时间的占用内存。
java提供了很多方法来判断内存空间是否可以被释放掉,但是一处已分配的内存空间对操作者是否有用java无法完全做出正确的判断,比如一个局部变量,在方法结束后是一定会被释放的,即便你会很频繁的调用并希望它能一直保有内存。
没有影响是因为内存只是一个缓存,释放了再重新分配就好,只不过是速度慢了些,任何检测的算法都只能是尽量提高速度。
展开全部
不会的,java释放内存时是检查对象是否被引用了,引用的是不会被释放的,只有不再被引用的对象占用的内存在会被会收。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java里面的静态变量只会在内存中分配一次,并且在main方法结束以后释放掉占用的内存,而局部变量可能会存在和销毁多次,关键看调用的次数,如果没有指针指向他就会销毁掉。而IO则需要在使用完以后手动关闭,否则需要main方法执行完以后才会释放掉占用的资源。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本不会,但是内存泄露还是会存在的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有用的一般都会放年老代,年老代进行一次fullGC比较慢,年轻代会比较快的释放
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询