假设我有两个进程p1,p2 runnning作为我的应用程序的一部分。
假设p1正在运行,最初正在执行函数f1(),然后f1()调用f2()。调用f2()进程p2开始激活
我想确认的是: - 1)我们是否有针对不同流程的单独堆栈?
2)我们是否有针对不同流程的单独堆?或者做不同的进程共享同一个堆?
3)正如我们所知,对于每个进程的32位操作系统,虚拟内存的大小为4GB。因此,对于每个具有4GB虚拟内存的进程,此4GB被分区进入堆,堆栈,文本,数据感谢。
答案 0 :(得分:5)
1)是的,每个进程都有自己的堆栈。
2)是的,每个进程都有自己的堆。
3)我认为你不会得到整个4GB。其中一些是为核心内容保留的。
答案 1 :(得分:1)
答案 2 :(得分:1)
在Java中还有其他一些限制要考虑,例如只能使用Integer.MAX_VALUE来寻址数组。在许多与内存相关的领域中,这限制了大约2GB。