如果我像这样从windows框的命令行运行java:
"C:\Program Files (x86)\Java\jdk1.7.0_51\bin\java.exe" -XshowSettings:all -Xss=1m -Xmx256m我看到这个输出:
VM settings:
Stack Size: 1.00M
Max. Heap Size: 256.00M
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) Client VM对我来说最重要的部分是"Stack : 1.00M",这就是我通过命令行选项"-Xss1m“设置的内容。但是,如果删除此选项并让VM以默认堆栈大小运行,则将得到以下输出:
VM settings:
Max. Heap Size: 256.00M
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) Client VM注意,它不再显示“堆栈大小”了。如果没有指定自定义的"-Xss“值,我希望看到默认大小。是否有任何方法确定默认的线程堆栈大小?
发布于 2014-05-08 23:06:16
Windows应用程序的默认堆栈大小在.exe文件头中指定。
您可以使用Cygwin objdump工具或Microsoft dumpbin实用工具找到它:
C:\Program Files\Java\jdk1.7.0_51\bin> objdump -p java.exe | grep Stack
SizeOfStackReserve 0000000000100000
SizeOfStackCommit 0000000000001000
C:\Program Files\Java\jdk1.7.0_51\bin> dumpbin.exe /headers java.exe | grep stack
100000 size of stack reserve
1000 size of stack commit如我们所见,Java7 x64默认堆栈大小为0x100000 (1MB)。
对于x86版本,默认堆栈大小为0x50000 (320 KB):
C:\Program Files (x86)\Java\jre7\bin>objdump -p java.exe | grep Stack
SizeOfStackReserve 00050000
SizeOfStackCommit 00001000https://stackoverflow.com/questions/23552296
复制相似问题