美文网首页
小问题:循环局部变量的jvm回收

小问题:循环局部变量的jvm回收

作者: 无聊之园 | 来源:发表于2019-05-13 08:45 被阅读0次

如此循环创建对象,jvm到底会不会回收?看起来好像,对象的引用一直没有失去,好像不会回收,但是实际上,其实是会回收的。
从原理上分析:java虚拟机栈的局部变量表,编译期其大小就已经固定了,所以,并不会因为循环创建变量引用而动态添加引用,而是使用固定的一个引用,只是引用的直接指向地址或者引用句柄指向的地址变了而已,故,其实对象的引用是没有的,可达性分析法会认定这个对象可以进行回收。
public static void TestDirectByteBuffer() {
List<ByteBuffer> list = new ArrayList<ByteBuffer>();
while(true) {
ByteBuffer buffer = ByteBuffer.allocateDirect(1 * 1024 * 1024);
//list.add(buffer);
}
}

相关文章

网友评论

      本文标题:小问题:循环局部变量的jvm回收

      本文链接:https://www.haomeiwen.com/subject/numkaqtx.html