性能问答>java 直接内存回收问题>
2回复
1年前

java 直接内存回收问题



操作系统可分配jvm的内存空间大小是由限制的,
可用空间=堆+线程栈+直接内存

对于堆而言,jvc通过gc进行垃圾回收。,
那么请问

for(int i=0;i<1024;i++){

ByteBuffer.allocateDirect(1024*1024);
System.out.println(i);
  System.gc();
}

这中方式会在直接内存中分配空间,直接内存是如何回收内存的???

直接内存也是通过gc来回收吗?

2726 阅读
请先登录,再评论

是通过GC回收的,不过GC只会在老年区满了触发Full GC时,才会去顺便清理直接内存的废弃对象。

1年前

某些文章里提到Full GC会释放,但也得取决于不同的 Collector 。

Oracle 文档上也没有提到Full GC 会清除 Direct Memory(我没找到),就算Full GC会清理,也不敢交给他吧……自己分配,自己维护,自己释放更靠谱,不纠结。

5月前