java – 给jvm的线程堆栈大小选项(-Xss)是什么?为什么Windows PC中至少有68k的限制?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 给jvm的线程堆栈大小选项(-Xss)是什么?为什么Windows PC中至少有68k的限制?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1349字,纯文字阅读大概需要2分钟。
内容图文
![java – 给jvm的线程堆栈大小选项(-Xss)是什么?为什么Windows PC中至少有68k的限制?](/upload/InfoBanner/zyjiaocheng/963/06dab22733b547e5aa97ef57458c3d92.jpg)
我看过JVM option -Xss – What does it do exactly?这个链接,但我的问题是这个选项有用吗.
因为,如果我们为-Xss值设置了一个非常小的限制,那么线程可能无法正常工作,因为它可能会在大多数情况下抛出stackOverflow错误.
为什么这个值至少有64k的限制?
我是如何得到这个64k限制的,当我试图在IntelliJ iDE上配置运行时vm选项时,我试图给出一些像10k这样的东西,它弹出这个错误,说它需要至少64k的线程堆栈大小.
另一个问题是,如何从java程序中找到我的嵌入式设备中运行的jvm的默认线程堆栈大小?
谢谢,
森
解决方法:
-Xss允许根据应用程序需求配置Java线程堆栈大小:
>更大的堆栈大小适用于使用递归算法或其他深度方法调用的应用程序;
>较小的堆栈大小适用于运行数千个线程的应用程序 – 您可能希望节省线程堆栈占用的内存.
请记住,HotSpot JVM还为本机方法和JVM运行时调用(例如类加载)使用相同的Java线程堆栈.这意味着Java线程堆栈不仅用于Java方法,而且JVM也应为其自己的操作保留一些堆栈页面.
所需的最小堆栈大小由以下公式计算:
(StackYellowPages + StackRedPages + StackShadowPages + 2*BytesPerWord + 1) * 4096
哪里
>需要StackYellowPages和StackRedPages来检测和处理StackOverflowError;
> StackShadowPages保留用于本机方法;
> 2 * 4(32位JVM)或2 * 8(64位JVM)用于VM运行时功能;
> extra 1用于主线程中的JIT编译器递归;
> 4096是默认页面大小.
例如.对于32位Windows JVM最小堆栈大小=(3 1 4 2 * 4 1)* 4K = 68K
顺便说一句,您可以使用以下JVM选项减少最小所需的堆栈大小:(不推荐!)
-XX:StackYellowPages=1 -XX:StackRedPages=1 -XX:StackShadowPages=1
内容总结
以上是互联网集市为您收集整理的java – 给jvm的线程堆栈大小选项(-Xss)是什么?为什么Windows PC中至少有68k的限制?全部内容,希望文章能够帮你解决java – 给jvm的线程堆栈大小选项(-Xss)是什么?为什么Windows PC中至少有68k的限制?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。