java - Java 中的线程运行一段时间后能否获得实际使用的堆栈大小?

标签 java stack-size

这个想法是帮助确定给定 Java 应用程序的最佳堆栈大小。

利用此信息可以做的一件事是创建一个堆栈大小的范围表,线程可以在退出时修改该表,并且可以在应用程序退出时定期转储该表。

编辑:这是在具有实际工作负载的客户计算机上运行的情况下,我无法访问分析器。

编辑2:为了回答一个答案,每个线程(IIRC)256Kb,我有一段时间想知道这与所需的现实有多接近(我也想知道这个问题是否可能不太相关,因为< em>也许堆栈空间是按需分配的)。我们有一个基于消息传递和高度线程的应用程序服务器,可以在从 ARM 手持设备到八核 Linux、到中型机和大型机的所有设备上运行 - 如果能够了解我们可以在哪里(以及是否)进行交易,那就太好了具有许多消息处理程序的系统上堆的堆栈空间。

有一些类似的问题很有趣,但它们是 native /操作系统特定的:

最佳答案

堆栈内存将很难获得。

你能做的最好的事情就是通过 MemoryMXBean 来查看 JVM 内存使用情况,这也很容易。 .

关于java - Java 中的线程运行一段时间后能否获得实际使用的堆栈大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9420367/

相关文章:

java - App Engine 未编码字符串作为键 - 字符串长度是否有上限?

java - 无锁执行 Select HQL?

c# - 如何更改控制台应用程序的堆栈大小?

Python 线程堆栈大小和段错误

delphi - 有没有办法将默认堆栈大小增加到超过 16777216 字节?

java - 转换为 JSON 时如何使用 Java Enum 的属性

Java 分析 : java. lang.Object.hashCode 占用一半的 CPU 时间但从未显式调用

java - 同时运行多个 JDK

linux - 增加堆栈大小

babeljs - Babel,使用 path.replaceWith 时超出了最大调用堆栈大小