开发者社区> 问答> 正文

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

如题,“如何输出HttpRequest和HttpResponse对象占内存的大小”?
网上说,利用java.lang.Instrumentation的API来计算,我调用了提供的一个工具类,但是报NullPointerException异常:
screenshot
screenshot
进一步分析,应该是实例化Instrumentation的premain()方法没有被JVM调用。
应该通过“ -javaagent”命令来调用,不知道应该如何调。

展开
收起
蛮大人123 2016-03-11 15:28:00 3399 0
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

    2019-07-17 18:59:23
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载