java - 以编程方式测量 transient 内存和性能

标签 java performance memory-management

我们有一个应用程序,其中有一个用例来围绕应用程序性能进行测试。我们针对当前正在使用的构建运行候选构建,并比较统计信息,例如不同操作所花费的时间、操作的内存消耗以及各种其他一般指标(例如总堆大小等)...

我的问题是操作期间 transient 内存的测量。我们观察到它是波动的(太大而不可靠)。我正在使用 JMX 并以 1 秒的间隔轮询 JMX bean...

我们尝试过的一个解决方案(仍在测试中)是将轮询时间减少到 10 毫秒。不确定这是否有帮助...

有人有其他更好的想法或遇到过同样的问题吗?

谢谢, 纪中

最佳答案

另一个可能有用的工具是 jstat。定期记录每个分代空间消耗了多少内存以及执行GC的原因。

但是,听起来您正在创建太多垃圾,以至于这些工具为您提供了嘈杂的信息。最好的工具听起来像是使用内存分析器,它将为您提供有关对象分配和内存消耗位置的更多详细信息。我建议您在 eval 上尝试 YourKit,查看对象分配热点并尝试减少创建的对象数量。

关于java - 以编程方式测量 transient 内存和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5879258/

相关文章:

database - 三元组数据库的优点和缺点是什么?

Java应用程序: ask to wait in case of memory overflow

c - 如何使用 C 获取特定的内存地址

ios - 将Objective-C block 传递给performSelector:withObject:afterDelay:是否安全?

java - 在 RabbitMQ 中组接收消息,最好使用 Spring AMQP?

java - Jar 文件找不到 keystore

java - 为什么从finally block 抛出的异常会忽略从catch block 抛出的异常?

java - 摆脱 ImageIcon 的框边框

mysql - 使用具有相同 where 子句的 2 个子查询合并 SQL 查询

与 XP 相比,WinForms ListView 在 Windows 7 中绘制速度极慢