JVM内存结构中的直接内存回收方式

JVM内存结构分为JVM虚拟机内存和直接内存,虚拟机内存回收由垃圾回收器进行,那么直接内存是如何回收的呢?

直接内存的回收过程:直接内存虽然不是 JVM 虚拟机内存空间,但它的垃圾回收也由 JVM 负责。

垃圾收集进行时,虚拟机虽然会对直接内存进行回收, 但是直接内存却不能像新生代、老年代那样,发现空间不足了就通知收集器进行垃圾回收, 它只能等老年代满了后 Full GC,然后“顺便”帮它清理掉内存的废弃对象。 否则只能一直等到抛出内存溢出异常时,先 catch 掉,再在 catch 块里大喊 “System.gc()”。 要是虚拟机还是不听,那就只能眼睁睁看着堆中还有许多空闲内存,自己却不得不抛出内存溢出异常了。

原文链接:https://github.com/doocs/jvm/blob/master/docs/06-jvm-performance-tuning.md

你可能感兴趣的:(Java)