首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定Hotspot VM默认线程堆栈大小

如何确定Hotspot VM默认线程堆栈大小
EN

Stack Overflow用户
提问于 2014-05-08 20:51:32
回答 1查看 3.2K关注 0票数 5

如果我像这样从windows框的命令行运行java:

代码语言:javascript
复制
"C:\Program Files (x86)\Java\jdk1.7.0_51\bin\java.exe" -XshowSettings:all -Xss=1m -Xmx256m

我看到这个输出:

代码语言:javascript
复制
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以默认堆栈大小运行,则将得到以下输出:

代码语言:javascript
复制
VM settings:
Max. Heap Size: 256.00M
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) Client VM

注意,它不再显示“堆栈大小”了。如果没有指定自定义的"-Xss“值,我希望看到默认大小。是否有任何方法确定默认的线程堆栈大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 23:06:16

Windows应用程序的默认堆栈大小在.exe文件头中指定。

您可以使用Cygwin objdump工具或Microsoft dumpbin实用工具找到它:

代码语言:javascript
复制
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):

代码语言:javascript
复制
C:\Program Files (x86)\Java\jre7\bin>objdump -p java.exe | grep Stack
SizeOfStackReserve      00050000
SizeOfStackCommit       00001000
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23552296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档