关于Java内存模型中大对象拷贝问题

刚刚参加了蘑菇街的最后一面,大佬面。大佬大多数时间都是在谈人生和理想,最后问了一个技术问题,结果我没答出来...GG
JVM内存模型分为主内存和工作内存,线程对主内存中的共享变量进行操作时,需要拷贝一个副本到自己的工作内存中,那么问题来了,如果这个共享变量很大怎么办?例如List对象,也是全部拷贝吗?JVM是如何解决的?
《深入理解JVM虚拟机》中只是在页脚注释部分模糊地描述了一下对于大对象拷贝只是拷贝对象引用或对象中的某个字段,我上网搜索了相关知识,也没有找到一个确切的答案,所以想来请教一下各位大佬。
#蘑菇街#
全部评论
M😂
点赞 回复 分享
发布于 2017-09-14 10:59
这个直接对引用进行修改不就可以了吗?如果是n个线程访问这个大对象每个线程复制一遍,那么jvm不得崩了?个人理解不对请指出
点赞 回复 分享
发布于 2017-09-14 11:01
引用啊
点赞 回复 分享
发布于 2017-09-14 11:13
大佬先用人生理想麻痹你,瞬间抓住你的弱点
点赞 回复 分享
发布于 2017-09-14 11:59
问题很犀利,期待比较权威的答案
点赞 回复 分享
发布于 2017-09-15 13:56
这个没有大佬知道吗
点赞 回复 分享
发布于 2017-09-15 14:53
JMM中的read load都是对单个内存地址的操作,只能操作基本类型。所以,操作对象的时候,应该只load需要的field的那一小块儿内存,跟对象大小无关。
点赞 回复 分享
发布于 2017-09-15 15:11

相关推荐

不愿透露姓名的神秘牛友
今天 12:19
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务