如何确定Hotspot VM的默认线程堆栈大小
如果我从我的Windows机器上的命令行运行java,如下所示:
"C:Program Files (x86)Javajdk1.7.0_51binjava.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 Size:1.00M”,这是我通过命令行选项“-Xss1m”设置的。 但是如果我删除这个选项并让虚拟机以默认堆栈大小运行,那么我得到这个输出:
VM settings:
Max. Heap Size: 256.00M
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) Client VM
注意它不再显示“堆栈大小”了。 如果我没有指定自定义的“-Xss”值,我希望能看到默认大小。 有什么方法可以确定默认的线程堆栈大小吗?
Windows应用程序的默认堆栈大小在.exe
文件头中指定。
您可以使用Cygwin objdump
工具或Microsoft Visual Studio dumpbin
实用程序找到它:
C:Program FilesJavajdk1.7.0_51bin> objdump -p java.exe | grep Stack
SizeOfStackReserve 0000000000100000
SizeOfStackCommit 0000000000001000
C:Program FilesJavajdk1.7.0_51bin> dumpbin.exe /headers java.exe | grep stack
100000 size of stack reserve
1000 size of stack commit
正如我们所看到的,Java 7 x64默认栈大小为0x100000(1 MB)。
对于x86版本,默认堆栈大小为0x50000(320 KB):
C:Program Files (x86)Javajre7bin>objdump -p java.exe | grep Stack
SizeOfStackReserve 00050000
SizeOfStackCommit 00001000
链接地址: http://www.djcxy.com/p/82749.html
上一篇: How to determine Hotspot VM default thread stack size
下一篇: How many types of stack are there in a running JVM program?