JVM - 在Spring应用程序运行时期间查看类字段

时间:2018-01-25 15:15:21

标签: java spring jvm properties-file

最近我需要查看一些类字段值。 该课程看起来有点像这样:

public class Foo(){

   @Autowired
   protected MessageResolver resolver;

   protected static final String INJECTED_TEXT_PROPERTY_CODE = "code";
   protected String injectedText;

   @PostConstruct
   public void initialize() {
    injectedText = resolver.resolveMessage(INJECTED_TEXT_PROPERTY_CODE);
   }
}

然后我有一些这样的属性来源:

code=injectedCode

现在任务的难点在于它不会在我的机器上而是在客户端机器上。因此,理想情况下,我需要一些简单的命令来执行,这不会弄乱工作系统。

编辑:我想达到峰值的字段是 injectText

EDIT2:最有趣的解决方案是由@apangin(jmap和dump analyzis offline)引入的。谢谢!

2 个答案:

答案 0 :(得分:0)

在启动应用程序时,您需要加载客户端计算机的属性。看这个http://www.baeldung.com/properties-with-spring

此外,您可以使用spring中的@Value注释来注入属性值

import org.springframework.beans.factory.annotation.Value;

class MyClass {

   @Value("${value.from.property}")
   private String valueFromProperty;

}

答案 1 :(得分:0)

正如@apangin建议我使用jmap实用程序来创建应用程序的堆转储。

首先,我必须弄清楚我的应用程序PID是什么。我用命令做到了:

jps

比我创建了我的应用程序的堆转储(我的PID是303):

jmap -dump:live,file=C:\dump.bin 303

最后,我用jhat实用程序分析了堆转储:

jhat C:\dump.bin