我想获取对象的大小。我试图用这个方法:获取对象的大小
import java.lang.instrument.Instrumentation;
public class ObjectSizeFetcher {
private static Instrumentation instrumentation;
public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}
public static long getObjectSize(Object o) {
return instrumentation.getObjectSize(o);
}
}
但它抛出这个错误:
java.lang.NullPointerException
test.ObjectSizeFetcher.getObjectSize(ObjectSizeFetcher.java:13)
servlet.testObj.doGet(cms.java:55)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
但是我tryed的JProfiler和MAT但我无法找到该对象活着......
我能做什么?
的premain当一个代理从Java连接被称为命令行,例如:'-javaagent:agent.jar',你在做这个吗? – alexgirao
@alexgirao不,因为我使用tomcat,我可以这样做吗? –
afaik,当你使用java代理时,你会得到instrumentation对象,一个java代理用来监视jvm,也许这不是获得这个对象的大小的方法 – alexgirao