请稍等 ...
×

采纳答案成功!

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

关于线程的工作内存和JVM内存划分

老师您好,您讲的JVM内存划分的目标其实是计算机中主内存,那意思像栈,程序计数器等等都位于主内存,只是JVM做了一个逻辑划分,而栈中存的是一个一个的栈帧,一个线程执行一个一个方法的过程就是栈帧从入栈到出栈的过程,每个栈帧保存了局部变量表、常量池引用等(jdk1.7),那您讲的线程的工作内存其实是CPU寄存器和多级缓存的一部分,怎么把这些联系起来呢?感觉想不通,谢谢!

正在回答

1回答

你好,你这个问题和这个问题差不多,你可以参考一下,本质上来讲JVM和JMM是两个层面的内容,http://coding.imooc.com/learn/questiondetail/59932.html

0 回复 有任何疑惑可以回复我~
  • 提问者 慕神2874530 #1
    老师,您好,我这样理解对不对呢?抛开java而言,对于计算机来说,一个线程运行的时候,CPU寄存器和高速缓存(客观上其实也包括内存)就相当于它的工作内存,寄存器和高速缓存相当于线程的工作内存,其数据拷贝都是来源于内存,也需要更新回内存,内存是共享的;而JVM概念个上相当于一个虚拟的计算机,它把计算机内存中自己使用的那一部分从逻辑上划分为程序计数器 栈 堆等等区域,模拟了计算机工作相关的内存模型,但是像C语言这种也有栈等相关概念,其"位置"对应的应该就是CPU的寄存器或高速缓存;而JMM描述的更像贴近计算机运行本质的内存划分,即线程工作内存(寄存器 高速缓存)、内存等等,因为JVM对于计算机来说,其实就是一个进程  有没有理解有问题的地方呢?谢谢您
    回复 有任何疑惑可以回复我~ 2018-07-13 09:53:11
  • Jimin 回复 提问者 慕神2874530 #2
    不安全对,JVM相当于一个虚拟的计算机,他在已有的基础上额外定义了一些概念,java本身是跑在jvm上的,相当于是跑在这个虚拟的计算机上。JMM呢,是对这个做了一个规定,比如synchronized关键字出现时要达到的锁的效果、代码执行先后顺序、可见性等等,相当于jvm在模拟计算机运行是,需要严格遵守某些约定,这样java每个关键字的特性才能有所保证,最终的运行结果才能符合预期。
    回复 有任何疑惑可以回复我~ 2018-07-13 09:59:15
  • 提问者 慕神2874530 回复 Jimin #3
    谢谢您的耐心解答,感觉我还是需要再补一下操作系统原理和JVM规范相关知识才能搞的清楚,趁着刚毕业不久,还有劲儿 这是一定要搞明白的,老师,我先去补一下相关知识,有问题再咨询您哈,再次感谢!
    回复 有任何疑惑可以回复我~ 2018-07-13 10:10:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信