【发布时间】:2011-08-06 11:08:48
【问题描述】:
我们正在开发一个 java 项目,我们使用 ant 来构建和运行该程序。现在我们正在做一些性能测试,我们想使用classmexer。问题是我们不能让 ant 和 classmexer 一起工作。
因为有必要将参数传递给 jvm
-javaagent:classmexer.jar
我们在 build.xml 中尝试了以下内容
<target name="run" description="Try running it." depends="all">
<java jvmargs="-javaagent:classmexer.jar" jar="${OUT_DIR}/${FILE_NAME}.jar" failonerror="true" fork="true">
</java>
</target>
但它不起作用。 在运行时程序会抛出以下异常
java.lang.IllegalStateException: Agent not initted
at com.javamex.classmexer.Agent.getInstrumentation(Agent.java:33)
at com.javamex.classmexer.MemoryUtil.deepMemoryUsageOf(MemoryUtil.java:104)
at com.javamex.classmexer.MemoryUtil.deepMemoryUsageOf(MemoryUtil.java:80)
at output_archive.test.provaJDOM.main(provaJDOM.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.star.lib.loader.Loader.main(Loader.java:141)
当MemoryUtil.deepMemoryUsageOf(Object) 被调用时
所以看来这不是将参数传递给jvm的正确方法,但我们不知道该怎么做。
感谢您的帮助:)
【问题讨论】:
标签: java ant profiling memory-management