采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,您讲的JVM内存划分的目标其实是计算机中主内存,那意思像栈,程序计数器等等都位于主内存,只是JVM做了一个逻辑划分,而栈中存的是一个一个的栈帧,一个线程执行一个一个方法的过程就是栈帧从入栈到出栈的过程,每个栈帧保存了局部变量表、常量池引用等(jdk1.7),那您讲的线程的工作内存其实是CPU寄存器和多级缓存的一部分,怎么把这些联系起来呢?感觉想不通,谢谢!
你好,你这个问题和这个问题差不多,你可以参考一下,本质上来讲JVM和JMM是两个层面的内容,http://coding.imooc.com/learn/questiondetail/59932.html
老师,您好,我这样理解对不对呢?抛开java而言,对于计算机来说,一个线程运行的时候,CPU寄存器和高速缓存(客观上其实也包括内存)就相当于它的工作内存,寄存器和高速缓存相当于线程的工作内存,其数据拷贝都是来源于内存,也需要更新回内存,内存是共享的;而JVM概念个上相当于一个虚拟的计算机,它把计算机内存中自己使用的那一部分从逻辑上划分为程序计数器 栈 堆等等区域,模拟了计算机工作相关的内存模型,但是像C语言这种也有栈等相关概念,其"位置"对应的应该就是CPU的寄存器或高速缓存;而JMM描述的更像贴近计算机运行本质的内存划分,即线程工作内存(寄存器 高速缓存)、内存等等,因为JVM对于计算机来说,其实就是一个进程 有没有理解有问题的地方呢?谢谢您
不安全对,JVM相当于一个虚拟的计算机,他在已有的基础上额外定义了一些概念,java本身是跑在jvm上的,相当于是跑在这个虚拟的计算机上。JMM呢,是对这个做了一个规定,比如synchronized关键字出现时要达到的锁的效果、代码执行先后顺序、可见性等等,相当于jvm在模拟计算机运行是,需要严格遵守某些约定,这样java每个关键字的特性才能有所保证,最终的运行结果才能符合预期。
谢谢您的耐心解答,感觉我还是需要再补一下操作系统原理和JVM规范相关知识才能搞的清楚,趁着刚毕业不久,还有劲儿 这是一定要搞明白的,老师,我先去补一下相关知识,有问题再咨询您哈,再次感谢!
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.7k 1
1.1k 18
1.2k 15
3.6k 12
1.2k 12