JAVA如何查看HttpRequest和HttpResponse占用的内存大小?

如题,“如何输出HttpRequest和HttpResponse对象占内存的大小”?
网上说,利用java.lang.Instrumentation的API来计算,我调用了提供的一个工具类,但是报NullPointerException异常:

clipboard.png

clipboard.png

进一步分析,应该是实例化Instrumentation的premain()方法没有被JVM调用。
应该通过“ -javaagent”命令来调用,不知道应该如何调。

阅读 4.2k
1 个回答

把下面的类编译好放到ObjectSizeFetcherAgent.jar中

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);
    }
}

在MANIFEST.MF中加入:

Premain-Class: ObjectSizeFetcher

然后写个test类

public class C {
    private int x;
    private int y;

    public static void main(String [] args) {
        System.out.println(ObjectSizeFetcher.getObjectSize(new C()));
    }
}

在命令行中这样执行:

java -javaagent:ObjectSizeFetcherAgent.jar C
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题