如何查看java对象所占的内存大小

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  标明清单(manifest)

  增加:com/bj58/test/SizeOfAgent.class(读入= 3119) (写出= 1698)(压缩了 45%)

  增加:com/bj58/test/SizeOfAgent.java(读入= 3147) (写出= 1204)(压缩了 61%)

  增加:com/bj58/test/Test$Person.class(读入= 442) (写出= 305)(压缩了 30%)

  增加:com/bj58/test/Test.class(读入= 692) (写出= 441)(压缩了 36%)

  增加:com/bj58/test/Test.java(读入= 509) (写出= 290)(压缩了 43%)

  D:\workspace\objsize\src>java -javaagent:size.jar com.bj58.test.Test

  24

  MANIFEST.MF:

  Manifest-Version: 1.0

  Main-Class: com.bj58.test.Test

  Premain-Class: com.bj58.test.SizeOfAgent

  Boot-Class-Path:

  Can-Redefine-Classes: false

  【注意】MANIFEST.MF文件的格式要求比较严格,每一行要满足:key:空格value回车

  如何在web应用程序里面使用呢?

  以我的tomcat为例,

  (1)把size.jar上传tomcat的lib目录下面

  (2)修改catalina.sh:

  添加一行:

  JAVA_OPTS=”$JAVA_OPTS -javaagent:$CATALINA_HOME/lib/size.jar” //这一行是新添加的

  if [ -z “$LOGGING_MANAGER” ]; then

  JAVA_OPTS=”$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager”

  else

  JAVA_OPTS=”$JAVA_OPTS $LOGGING_MANAGER”

  fi

  (3)在应用里面添加一个controler:

  @Path(value = “/api/size”)

  @GET

  public ActionResult size() {

  Map<Long, List<Long>> map = ApiUtils.getHotindexBaidu();

  long size = SizeOfAgent.fullSizeOf(map);

  return new ApiActionResult(“size:”+size);

  }

  然后就可以用浏览器来访问了。

[1][2][3]

如果心胸不似海,又怎能有海一样的事业。

如何查看java对象所占的内存大小

相关文章:

你感兴趣的文章:

标签云: