Sen*_*Sen 3 java stack jvm jvm-arguments
我见过JVM选项-Xss - 它究竟做了什么?这个链接,但我的问题是这个选项是如何有用的.
因为,如果我们为-Xss值设置了一个非常小的限制,那么线程可能无法正常工作,因为它可能会在大多数情况下抛出stackOverflow错误.
为什么这个值至少有64k的限制?
我是如何得到这个64k限制的,当我试图在IntelliJ iDE上配置运行时vm选项时,我试图给出一些像10k这样的东西,它弹出这个错误,说它需要至少64k的线程堆栈大小.
另一个问题是,如何从java程序中找到我的嵌入式设备中运行的jvm的默认线程堆栈大小?
谢谢,
森
apa*_*gin 19
-Xss
允许根据应用程序需求配置Java线程堆栈大小:
请记住,HotSpot JVM还为本机方法和JVM运行时调用(例如类加载)使用相同的Java线程堆栈.这意味着Java线程堆栈不仅用于Java方法,而且JVM也应为其自己的操作保留一些堆栈页面.
所需的最小堆栈大小由以下公式计算:
(StackYellowPages + StackRedPages + StackShadowPages + 2*BytesPerWord + 1) * 4096
Run Code Online (Sandbox Code Playgroud)
哪里
StackYellowPages
并且StackRedPages
需要检测和处理StackOverflowError;StackShadowPages
保留用于本机方法;例如,32位Windows JVM最小堆栈大小=(3 + 1 + 4 + 2*4 + 1)*4K = 68K
顺便说一句,您可以使用以下JVM选项减少最小所需的堆栈大小:(不推荐!)
-XX:StackYellowPages=1 -XX:StackRedPages=1 -XX:StackShadowPages=1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4193 次 |
最近记录: |