发布网友 发布时间:2022-04-23 00:41
共3个回答
热心网友 时间:2023-09-18 04:08
JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。参考资料:http://blog.csdn.net/zsuguangh/article/details/6429592追问比如如下的这个方法,追答Java的运行机制就是在对象没有被引用的时的空余时间,或者内存不够时会去清理
热心网友 时间:2023-09-18 04:09
堆内存用于存放由new创建的对象和数组,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。热心网友 时间:2023-09-18 04:09
您这样的思维有问题。在方法未运行或运行结束之前,如何判断该对象没有被引用。A a=new A().若在此就进行回收。那万一在该方法的最后有引用呢。这样就增加了编译错误的异常的可能性。因此,垃圾回收会在方法执行完成后执行。。。望采纳追问我的意思就是如果局部变量指向的堆内存,只在该方法内有效,那么就应该跟回收栈内存一样,在方法执行结束后回收。