老师, gc 使用复制以及标记-整理算法导致对象在heap中动来动去, gc前和gc后, 是如何通过同一个引用访问同一个对象的

来源:8-6 String Constant Variable

慕哥8298992

2019-01-02

User u = new User(); // 此时 u 在 eden

… 发生了gc, user 从eden 到了 s0, 内存地址改变了

String name = u.getName() // 此时从 s0 获取到 User 对象, 程序肯定不出错, 如何做到的???

写回答

1回答

若鱼1919

2019-01-03

对象复制完成后,jvm会建立一张表,表中建立旧地址到新地址的索引。随后遍历一遍heap对象,修改他们发出引用的地址。

0
1
慕哥8298992
谢谢老师
2019-01-03
共1条回复

Java生产环境下性能监控与调优详解

系统掌握线上性能监控与 GC调优,线上代码调试

2373 学习 · 262 问题

查看课程