系统内存中是否同时存在堆栈和堆?

1 java windows heap stack jvm

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

另外,如果对上述问题的回答是“是”,是否可以告诉JVM在不同的位置(例如外部Micro SD卡)创建特定的应用程序堆栈和堆?还是仅将默认的堆栈/堆创建位置设置为RAM以外的其他位置?

Joe*_*oel 5

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

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