动态可扩展的JVM堆栈
JVM规范表明JVM堆栈可以是固定大小,也可以是动态可扩展的。
-Xss JVM选项允许设置固定大小,如果我没有设置此选项是设置默认值(大约512-2048k),但是如何告诉JVM在需要时动态分配其堆栈?
如果我不能设置动态大小选项,设置一个大的-Xss值(假设20M)实际上为我的JVM中的每个线程分配20MB的内存,还是动态分配的内存将限制为20MB?
最大堆栈大小是分配给堆栈的虚拟地址空间量。 内存仅根据需要提交到堆栈。
请注意,在32位系统上,虚拟地址空间是一种相对稀缺的资源。 每个进程得到的数量少于(有时少得多)4GB。 考虑到这一点,20MB的堆栈会将线程数限制在75到175之间。
关于动态扩展,即使规范可能支持它,实现也可能不支持。
那么,如何告诉JVM在需要时动态分配其堆栈?
你不。 将所有设置保留为默认值,如果线程中的计算需要的堆栈大于允许的堆栈,则Java虚拟机会抛出StackOverflowError。
这是使用-Xss显式增加新线程内存分配的提示。
这不会影响JVM堆。 [请参阅-Xmx -Xms以设置堆大小]
另外我必须说,每个线程20Mb似乎有点过多。
所有这些都取决于堆的大小和您希望支持的并发线程数。
- 如何为Java 7中的现有国家/地区代码添加新的Currency到java.util.Currency?
- 如何使用JPA / hibernate创建索引,并使用mappedsupperclass中的字段和来自具体实体的字段
- 关于空间/时间的Groovy集合性能考虑因素
- 无法使用资源注释在JBoss 6.1.0中注入JMS QueueConnectionFactory
- Java GUI,组织一个对话框以从用户获取数据
- Bean属性不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配? 春批
- 读取文本文件始终返回0 – Java
- 如何在JTable列中只选择一个复选框
- 需要帮助改进java客户端端口侦听器