线程消耗的内存

线程消耗的内存,第1张

线程消耗的内存

据我所知,没有可靠的方法可以在运行时执行此 *** 作。正如源问题中指出的那样,堆是共享资源,因此单个线程的堆大小没有意义,因为它会与其他线程的对象引用重叠。

就是说,当我确实想知道单个线程的“保留”大小,是的,保留大小与您所要求的度量标准是不同但相似的指标时,我可以通过进行堆转储然后使用MAT来实现。
(http://www.eclipse.org/mat/)。

我知道有人使用Java代理来检测对象的分配,然后使用弱引用来监视何时获得GC。但是,这样做对性能的影响很大。很高。

最好在运行时和单元测试中使用启发式方法,以确保内存保持在界限之内。例如,您可以使用JMX来监视堆大小,并且当您看到旧一代正在增长时,您可以发出警报。使用getThreadAllocatedBytes计算分配率也可能很有用。

良好的运行时间监控工具:
appdynamics,NewRelic的,VisualVM的和yourkit

对于离线内存分析,mat和jclarity非常好。

一个非常有用的工具可以帮助您发现是否存在泄漏,或者至少运行得与预期不同,它是打印当前每个类在堆上有多少实例的计数: jcmd GC.class_histogram



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5506209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存