堆栈和堆都存在于系统RAM中吗?

时间:2014-08-11 19:23:38

标签: java windows jvm stack heap

问题与标题几乎相同,堆栈和堆是否始终存在于RAM中?假设Windows是有问题的机器的操作系统。

另外,如果上述问题的答案是肯定的,是否可以告诉JVM在不同的位置创建特定的应用程序堆栈和堆,例如外部微型SD卡?或者只是将默认的堆栈/堆创建位置设置为RAM以外的某个位置?

1 个答案:

答案 0 :(得分:4)

好吧,他们可能不会在所有次的RAM中。堆栈和堆只是RAM中分配的数据结构。当您的程序实际使用CPU时,它们都将(至少部分地)存在于RAM中。但是,当程序未运行时,OS可能会交换堆栈和堆所在的页面。然后可以将堆栈和堆的一部分(或全部)写入磁盘。

我猜你不能告诉JVM在任何其他地方分配这些数据结构。我无法想象你想要的场景;这将是非常缓慢的。我确信它们是使用malloc()或系统调用分配的,并且JVM不太可能为该类型的分配提供任何条件代码。