这个想法是帮助确定给定 Java 应用程序的最佳堆栈大小。
可以用这些信息做的一件事是创建一个堆栈大小的范围表,线程可以在退出时修改它,并且可以定期和在应用程序退出时转储。
编辑:这是在具有真实工作负载的客户机器上运行的上下文中,我无法获得探查器访问权限。
EDIT2:作为对一个答案的回应,在 (IIRC) 每个线程 256Kb 时,我想知道这与所需的现实有多接近(我也想知道这个问题是否不是很相关,因为 < em>也许 堆栈空间是按需分配的)。我们有一个基于消息传递和高度线程化的应用程序服务器,可以在从 ARM 手持设备到八核 Linux,再到中型机和大型机的所有设备上运行 - 最好了解我们可以在哪里(以及是否)进行交易具有许多消息处理程序的系统上堆的堆栈空间。
有一些类似的问题很有趣,但它们是本地/操作系统特定的:
最佳答案
堆栈内存将很难获得。
你能做的最好的,而且很容易,是通过 MemoryMXBean
使用 JVM 内存.
关于java - 运行一段时间后,能否获得Java中线程实际使用的堆栈大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826206/