一、JOL简介

JOL全称为Java Object Layout,是分析JVM中对象布局的工具,该工具大量使用了Unsafe、JVMTI来解码布局情况,所以分析结果是比较精准的。通常分析java对象的大小需要人工按照Java基础数据类型大小及内容大小估算出缓存对象的大概堆占用,但是麻烦还不准。而OpenJDK,提供了JOL包,可以帮我们在运行时计算某个对象的大小,是非常好的工具。

官网:http://openjdk.java.net/projects/code-tools/jol/

应用:分析对象在JVM的大小和分布

依赖

<!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core -->
<dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.10</version>
</dependency>

二、JOL使用

先创建几个待分析的类对象:

public class A {}public class B {private long s;
}public class C {private int a;private long s;
}int[] aa = new int[0];

创建分析主函数:

public class Test {public static void main(String[] args) {A a = new A();System.out.println(ClassLayout.parseInstance(a).toPrintable());B b = new B();System.out.println(ClassLayout.parseInstance(b).toPrintable());C c = new C();System.out.println(ClassLayout.parseInstance(c).toPrintable());int[] aa = new int[0];System.out.println(ClassLayout.parseInstance(aa).toPrintable());}}

JOL工具及其分析对象在JVM的大小和分布相关推荐

  1. openjdk jol 工具打印 Java 对象内存布局

    1.maven 依赖 <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-cor ...

  2. 使用JOL工具计算Java对象的大小

    注意:本文默认环境为 64 位操作系统,JDK 为 1.8,JVM 为 HotSpot. 工具 JOL全称为Java Object Layout,是用来分析JVM中对象布局的工具,可以在运行时计算某个 ...

  3. JOL:查看Java 对象布局、大小工具

    编写不易,转载请注明(http://shihlei.iteye.com/blog/2407693)! 一 概述 最近需求,打算再内存缓存数据,数据量130000万并且还会增加,了解这些数据占用空间的大 ...

  4. 2020 idea 查看内存消耗_查看运行时某个java对象占用JVM大小及通过idea查看java的内存占用情况...

    一.如果想看运行时某个java对象占用JVM内存大小,可以先将对象转换成字节类型,然后计算: List bizGroupRelatedEventInfos = bizEventVersionMappe ...

  5. 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( MAT 工具使用 | 最大对象 | 类实例个数 | 引用与被引用 | GC Roots 最短链 )

    文章目录 一. 内存中最大的对象 二. 查看每个类的对象实例的个数 三. 查看对象的引用与被引用 四. 查看对象到 GC Roots 的最短距离 1. 选择 Merge Shortest Paths ...

  6. 利用java虚拟机的工具jmap分析java内存情况

    2019独角兽企业重金招聘Python工程师标准>>> 有时候碰到性能问题,比如一个java application出现out of memory,出现内存泄漏的情况,再去修改bug ...

  7. 开源工具高效分析Java应用

    开源工具高效分析Java应用 不止一次,我们都萌发过想对运行中程序的底层状况一探究竟的念头.产生这种需求的原因可能是运行缓慢的服务.Java虚拟机(JVM)崩溃.挂起.死锁.频繁的JVM暂停.突然或持 ...

  8. 常用 Java Profiling 工具的分析与比较

    相对于静态代码分析,Profiling 是通过收集程序运行时的信息来研究程序行为的动态分析方法.其目的在于定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率.收集程序运行时信息的方法主要 ...

  9. java jmap 分析_利用java虚拟机的工具jmap分析java内存情况

    有时候碰到性能问题,比如一个java application出现out of memory,出现内存泄漏的情况,再去修改bug可能会变得异常复杂,利用工具去分析整个java application 内 ...

最新文章

  1. 人工智能在消费领域,都做了哪些事?
  2. win10+VS2013+opencv2.4.11的安装和配置
  3. Linux .bin安装文件制作
  4. Android开发之拍照功能实现
  5. 【Qt开发】QSplitter的使用和设置
  6. Flink的Table API 与SQL介绍及调用
  7. Oracle从零开始4——数据库更新操作
  8. MatLab 求平均值,方差,标准差
  9. 芝麻小程序客服移动版,一款更及时查看和回复消息的工具!
  10. 定积分求导例题_高中数学导数简单题——定积分、导数、导数的几何意义等解题方法...
  11. Loda Button
  12. 清梦_飘云羽逸_新浪博客
  13. 怎样在百度UMeditor编辑器中插入腾讯和爱奇艺网站视频?
  14. 华为企业交换机ACL经典案例
  15. web服务器服务不可用
  16. 匿名内部类的定义格式
  17. 《马克思主义基本原理》复习重点
  18. 使用LVM动态管理4T以上硬盘
  19. 工资少不加班与工资高但996,你选哪个
  20. Ansys Speos | 进行智能手机镜头杂散光分析

热门文章

  1. window系统 node.js安装 (node-v14安装配置、node-v16及其他版本安装配置)
  2. Linux系统cut命令详解
  3. fpga的EPCS 配置的2种方法(图文讲解,哈哈,网上互相抄袭的一些文字说明太不明了了)
  4. facenet 人脸识别库的搭建和使用方法(二)
  5. MySQL数据库:SQL执行顺序
  6. 杰理之 MIC录音 vbat电压低于3.2v会有很强的底噪?【篇】
  7. CCS 使用报错合集 -mcu:cc26xx
  8. deny all后如何优雅的处理403
  9. Nvidia Xavier Nx平台GMSL接口imx390相机驱动调试记录
  10. Xftp 7(FTP/SFTP客户端) V7.0.0107 官方中文免费正式版(附文件+安装教程)