从文档中,-Xss用于设置JVM的堆栈大小 . 但我对此声明感到非常困惑 .
在Java中,每个线程都有自己的堆栈 . 是否由-Xss指定了数字:
-
所有线程可以用作堆栈的总内存?例如如果-Xss设置为256K,则所有线程将在此256K内存中创建自己的堆栈 .
-
每个线程堆栈的大小 . 例如如果-Xss设置为256K,则每个线程将具有256K大的堆栈 . 因此10个线程将共使用2560K .
非常感谢你 .
编辑:
谢谢你的回答 . 它看起来像是上面的(2)senario . -Xss指定特定线程的最大堆栈大小 .
然后我有一个跟进问题:这些内存将分配在哪里?
我们可以使用-Xmx和-Xms指定保留的堆内存 . 是否使用这些保留的内存分配堆栈?或者直接从本机内存分配?
2 回答
这是每个线程的堆栈大小,引用this page on the java command:
所以这是你问题的第二部分 . 但是,我不认为总结所有线程堆栈大小通常是准确的 . 根据JVM实现,实际的总堆栈大小可能不是2560K . 请注意JVM规范中的引用:
每个线程都有自己的堆栈 . 大多数JVM使用本机线程,这些堆栈使用本机虚拟内存 . 使用虚拟内存的优点只是触摸的页面变成了使用的内存 .
本机内存就像C程序中的线程堆栈一样 .
堆栈不使用堆,所以不 .
是 .