除了 ZGC 之外,Java 12 还推出了一个亚毫秒级的 GC:Shenandoah GC,而在 JVM 垃圾回收详解 章节没有提及该 GC
近期仍然有多篇 JEP 和它有关,如 JEP 535 和 JEP 521,它们指示了 Shenandoah GC 向着分代 GC 演进,未来可能会成为一个好的选择
而我建议在 类的卸载 的条件里面额外写上一个 没有 jclass 的全局引用,虽然它和已有的 该类对应的 java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。 可能重复,但是这是 JNI 的一个经典的坑,即 JNI 的反射结果缓存问题,我认为有必要特别提醒一下。实际上构造 jclass 全局引用使得 jmethodID 等反射结果在长期运行的过程中仍然保证正确,是一个常见的做法。
除了 ZGC 之外,Java 12 还推出了一个亚毫秒级的 GC:Shenandoah GC,而在 JVM 垃圾回收详解 章节没有提及该 GC
近期仍然有多篇 JEP 和它有关,如 JEP 535 和 JEP 521,它们指示了 Shenandoah GC 向着分代 GC 演进,未来可能会成为一个好的选择
而我建议在 类的卸载 的条件里面额外写上一个 没有 jclass 的全局引用,虽然它和已有的 该类对应的
java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。 可能重复,但是这是 JNI 的一个经典的坑,即 JNI 的反射结果缓存问题,我认为有必要特别提醒一下。实际上构造jclass全局引用使得jmethodID等反射结果在长期运行的过程中仍然保证正确,是一个常见的做法。