jvm - 关于预写屏障上的 g1 gc 的问题

标签 jvm jvm-hotspot g1gc

有人告诉我,当 jvm 中的引用发生更改时,使用 g1 gc 将插入预写屏障来相应地更改 memset ,但是代码在哪里?我检查了字节码实现,例如 putstatic,但我找不到预屏障发生的位置? g1 gc 在哪里以及如何插入预写屏障?

最佳答案

从 Holger 的评论中可能已经很明显了,但这不会出现在字节码级别,而是由 JIT 生成。

最好的解释是源代码本身,在某些情况下是 excellent并且有时非常清楚:

G1 also requires to keep track of object references between different regions to enable evacuation of old regions, which is done as part of mixed collections. References are tracked in remembered sets and is continuously updated as reference are written to with the help of the post-barrier.

您还可以找到内存的集合 are, for example ,或者它们是如何构建的。

hereC2 编译器使用的 post_barrier 方法。虽然有些东西我可以从源代码中理解,但有些对我来说太复杂了,因此,很高兴阅读代码:)

关于jvm - 关于预写屏障上的 g1 gc 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59783600/

相关文章:

Java 减少堆栈大小以节省内存

jvm - 向 JVM 添加 super 指令

jvm - Java java.lang.Integer类中的代码注释 'HD, Figure'是什么意思?

java - Java 的 G1 垃圾收集器 (G1GC) 中的类卸载

java - 垃圾收集过程中什么是引用处理

java - Java中主线程什么时候停止?

c# - 虚拟机如何执行指令?

java - 有多少台个人计算机安装了 Java?

java - 评估 - OutOfMemoryError : unable to create new native thread

java - Intellij Idea15 CE 无法启动 -XX :+UseG1GC