开发者社区> 问答> 正文

虚拟机内存中,哪些是线程私有的?

虚拟机内存中,哪些是线程私有的?

展开
收起
问问小秘 2020-02-17 11:30:29 691 0
1 条回答
写回答
取消 提交回答
  • 这个其实搞清楚每一块的作用就很easy了。首先虚拟机的内存可以划分为:堆,方法区,虚拟机栈,本地方法栈,程序计数器。其中前两个是线程共有,后三个是线程私有。

    首先每个线程执行,都需要有个栈,这个栈就是虚拟机栈,这个肯定是私有的。 本地方法栈是用来执行一些本地的方法(这个简单的解释一下,因为JAVA的执行是依托虚拟机的,所以在操作系统和程序之间就会有一层虚拟机隔离,这是java可以实现高度跨平台的原因,但是也因为这个使得java对系统的操作变得很差,不能深入底层,所以java提供了一种机制:native方法,这个方法可以是C/C++等编写的本地方法,java可以调用)。显然,执行这些方法也是需要栈的,所以线程私有。

    程序计数器:这个就是标识线程执行到了那一条指令,当然在java里面应该叫做字节码。这个当线程阻塞的时候,肯定要存一下,因为等到CPU下次调用需要知道从哪里开始,所以这个也是线程私有的。

    其他的都是线程公共访问区域了,堆就是放各种数据的地方,方法区也能算对的一部分。

    2020-02-17 11:30:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
多IO线程优化版 立即下载