查看java 对象的大小

最近有点忙,上班烦了,所以抽时间去论坛看了看 ,看到一个用来显示对象大小的工具JOL (Java Object Layout),所以试了一下 。使用方法我找到的有两个,一个是下载core包,引入到类中使用,还有一种是下载cli-full包,使用命令行操作,我选择命令行操作.....

  1. 下载工具 jol-cli-0.8-full.jar
    注意一定要下载 jol-cli-版本号-full.jar 的完整版本才能使用。
  2. 打开命令行,进入到jol-cli-0.8-full.jar所在目录
  • 查看jdk中类
// 查看HashMap
java -jar jol-cli-0.8-full.jar internals java.util.HashMap
查看java 对象的大小_第1张图片
image.png
  • 查看自己写的类,把类编译后和jol 放在一起
// 注意这里我没有加package , 后面执行命令时就没有指定包路径
import java.util.HashMap;
import java.util.Map;
public class ObjectSize {
    public volatile long value = 0L;
    public long p1, p2, p3, p4, p5, p6;
    public Map map = new HashMap(50);
    public static void main(String[] args) {
    }
}
查看java 对象的大小_第2张图片
image.png
// 查看自己写的类
java -jar jol-cli-0.8-full.jar internals java -jar jol-cli-0.8-full.jar internals -cp . ObjectSize
查看java 对象的大小_第3张图片
image.png

通过这个工具可以看到对象头,属性所占的大小

  • 官方主页
  • jol命令行工具

参考:

  • 如何查看一个 java 对象的大小
  • 如何精确地测量java对象的大小——底层instrument API
  • java对象的内存布局(一):计算java对象占用的内存空间以及java object layout工具的使用
  • java对象的内存布局(二):利用sun.misc.Unsafe获取类字段的偏移地址和读取字段的值

你可能感兴趣的:(查看java 对象的大小)