【发布时间】:2014-10-27 10:34:19
【问题描述】:
在我研究线程及其消耗的内存(线程堆栈)时,我决定 做一个简单的负载测试,看看线程数如何影响我计算机上的 RAM。
所以,对于我使用 Tomcat 的测试,在 settings.xml 中设置了最小和最大网络 将容器线程池设置为 200。之后我在将池设置为 2000 时做了同样的事情。 我很震惊,因为内存占用没有区别(正在检查 Windows 任务管理器),它几乎是一样的。所以我想也许那些线程有 处于运行状态,使用负载测试工具“轰炸”服务器,我已经管理 做一些重负载,大多数线程现在处于运行状态,但没有 200 到 2000 个线程之间的内存消耗变化。
所以我想知道这个线程的堆栈内存是什么,这些结果意味着什么 创建线程时未分配线程堆栈上的内存?我怎么会 能够模拟线程堆栈内存增长到 RAM 消耗差异的大小 在图表上被“肉眼”看到?
提前致谢!
【问题讨论】:
-
代替 Window 的任务管理器,profile 了解更多详情。
-
您想监控线程对内存的影响还是堆栈大小的影响?对于堆栈大小的影响,使用递归方法更容易创建一个大堆栈。也许你会在这里找到一些线索:stackoverflow.com/questions/10629521/…
-
线程对内存的影响值得关注。我猜“空白”即使在运行时也不使用任何内存?
-
细节取决于操作系统,但这个问题已经在这里得到了一些回答:stackoverflow.com/questions/5483047/…
标签: java multithreading tomcat jvm