关于JVM中内存的问题

王大叔爱编程 发布于 2014/10/15 15:31
阅读 154
收藏 0

JVM中的内存模型包括:java堆,虚拟机栈,本地方法栈,方法区,程序计数器。

我们可以通过-Xmx,-Xms来设置java堆大小,通过-Xss来设置栈大小,通过设置-XX:PermSize和-XX:MaxPermSize来设置方法区的大小,我想问的是,如果控制程序计数器的大小呢?pc的大小是固定的吗?

加载中
0
王大叔爱编程
王大叔爱编程
各位师兄,有知道的吗?
0
王大叔爱编程
王大叔爱编程
不能让这个沉下去了。
0
有明丶
有明丶

程序计数器不是一个空间概念,谈不上大小,程序计数器是表示程序运行的位置,PC存储的是当前程序所在内存的地址,理论上也就是一个寻址位的大小。

在CPU中,有专门的寄存器存放PC数据。

而JVM中的程序计数器空间,主要是分配给不同线程用于保存程序指针的,一般一个PC也就占4 - 8字节,所有总的程序计数器空间可以忽略不计。也不需要限制程序计数器大小,这会导致新线程无法申请和执行,所有JAVA是不允许这么做的。

有明丶
有明丶
回复 @王大叔爱编程 : PC的存在JVM中堆栈以外的地方。虽然函数嵌套依赖于栈,但是PC是不依赖于堆和栈的,跳转函数是直接修改PC的值,而栈中存的,只是原位置的地址,虽然是原来PC的值,但是和PC不是同一个概念。
王大叔爱编程
王大叔爱编程
再问你一个问题,pc是存在堆中还是存在栈中呢?个人认为是独立于堆和栈的,但是网上也有说是放在堆中的,求解?
王大叔爱编程
王大叔爱编程
正解,谢谢。
返回顶部
顶部