Jer*_*ome 5 java memory multithreading stack-size
有谁知道是否有办法动态(运行时)增加主线程的堆栈大小?另外,我相信这是同一个问题,是否可以Thread在实例化后增加/更新 a 的堆栈大小?
Thread的 CTOR 允许定义其堆栈大小,但我找不到任何更新它的方法。实际上,我在JDK中没有发现任何对堆栈大小的管理(这往往表明这是不可能的),一切都在VM中完成。
根据java 语言规范,可以在“创建堆栈时”设置堆栈大小,但有一个注意事项:
Java 虚拟机实现可以为程序员或用户提供对 Java 虚拟机堆栈初始大小的控制,以及在动态扩展或收缩 Java 虚拟机堆栈的情况下,对最大和最小大小的控制。
IMO 不是很清楚,这是否意味着某些 VM 处理最大(编辑)堆栈大小在给定范围内演变的线程?我们可以用 Hostpot 做到这一点吗(我在 Xss 旁边没有找到任何与堆栈大小相关的选项)?
谢谢 !
堆栈大小会在使用时动态更新,因此您永远不需要这样做。
您可以设置的是它可以使用的最大大小-Xss这是使用的虚拟内存大小,您可以在 64 位 JVM 上设置任意大小。实际使用的内存取决于您使用的内存量。;)
编辑:重要的区别是最大大小被保留为虚拟内存(顺便说一句,堆也是如此)。即地址空间是保留的,这也是它不能扩展的原因。在 32 位系统中,您的地址空间有限,这仍然是一个问题。但在 64 位系统中,您通常拥有高达 256 TB 的虚拟内存(处理器限制),因此虚拟内存很便宜。实际内存以页为单位分配(通常为 4 KB),并且仅在使用时分配。这就是为什么即使在启动时分配了最大堆大小,Java 应用程序的内存似乎也会随着时间增长。线程堆栈也会发生同样的事情。仅分配实际接触的页面。
| 归档时间: |
|
| 查看次数: |
3885 次 |
| 最近记录: |