我有一个在JVM中运行的Java程序。我需要随时了解存储器中存储的变量。我需要列出他们的名字和价值观。可以使用任何语言或脚本编写此程序。
我使用JMAP和JHAT来获取堆转储并查看转储值。但它没有给出我想要的东西。
感谢任何帮助。谢谢!
答案 0 :(得分:0)
YourKit是镇上最好的廓形之一,但价格相当昂贵。而且,虽然它们可能会为您提供免费试用期,但下次您需要对下一个项目进行类似测试时,这对您没有任何帮助。
我建议使用好的'ole JRE附带的东西:JVisualVM。它具有您正在寻找的所有功能(在运行时动态检查变量/对象),以及监视堆/线程活动,执行堆/线程转储和分析它们的能力,甚至还有自己的对象查询语言( OQL)基于特定条件的转储之外的查询对象值。
缺点是它引入了适度的性能开销,因此您只想在非生产环境中运行它。 (对于使用AppDynamics或New Relic之类的低开销生产监控。 JVisualVM的性能开销是否会影响代码的运行速度?是的。 但因为您将为每个测试用例运行它,所有测试用例都会受到同等影响。
因此,听起来您希望将此作为基本工作流程: