2

我一直在使用检测类“SizeOfAgent”来计算我的 play 2.0.4 环境的内存需求。为了做到这一点,我将“-javaagent:lib\sizeof.jar”放在文件 framework\build.bat 中的 java 命令行上。这个 jar 文件有一个清单文件,其中包含对 sizeof.agent 的预主类配置。 SizeOfAgent 这工作正常,我一直在我的应用程序的某些组件上使用 fullSizeOf 方法。

升级到play 2.1.0版本后,此功能不再起作用。我收到错误消息:play.api.UnexpectedException:意外异常 [IllegalStateException:无法访问检测环境。请检查是否在 java 的“-javaagent”命令行参数中指定了包含 SizeOfAgent 类的 jar 文件。]

生成此错误是因为“静态 Instrumentation inst”返回 null:

    public static long sizeOf(Object o, boolean print) {
            if(inst == null) {
                    throw new IllegalStateException("Can not access instrumentation environment.\n" +
                                    "Please check if jar file containing SizeOfAgent class is \n" +
                                    "specified in the java's \"-javaagent\" command line argument.");
            }
            if (print) {
                System.out.println(o.getClass().getName() + " : " + inst.getObjectSize(o));
            }
            return inst.getObjectSize(o);
    }

有没有人尝试使用带有 play 2.1.0 的仪器类?

4

0 回答 0