我想獲取對象的大小。我試圖用這個方法:獲取對象的大小
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