请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

volitile会不会导致OOM

老师,您好!volitile 修饰一个map 当map很大的时候会不会导致OOM?

正在回答 回答被采纳积分+3

1回答

Jimin 2018-08-27 09:42:31

你好,volatile本质上不会额外消耗内存,只是强制代码读取主存里最新的值。如果因为map过大导致oom,那本质上是map的问题,而不是因为有volatile修饰。

0 回复 有任何疑惑可以回复我~
  • 提问者 朱小悬 #1
    老师,主存是什么?我一直对这个词很模糊,是JVM里的堆,栈?
    回复 有任何疑惑可以回复我~ 2018-08-27 09:48:33
  • Jimin 回复 提问者 朱小悬 #2
    主存是公共空间,基本可以类比为虚拟机模型中的堆,对象创建好了都是在主存里,所有线程都可以访问。
    工作内存是线程的私有内存,只有本线程可以访问,如果线程要操作主存中的某个对象,必须从主存中拷贝到工作内存,在对工作内存中的副本进行操作,操作后再写入主存,而不能对主存的对象直接操作。
    volatile主要是在某些场合需要强制读取主存里的数据。
    回复 有任何疑惑可以回复我~ 2018-08-27 09:54:38
  • 提问者 朱小悬 #3
    老师,volatile在去主存获取新值之前不是强制刷新新值到主存吗?为什么不会造成OOM捏
    回复 有任何疑惑可以回复我~ 2018-08-27 10:09:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信