问题标签 [jol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - HashMap 的 jol 足迹
我对对象足迹理解有疑问:
我在两种情况下运行以下行A和B
案例A的结果是:
案例 B 结果是:
A 和 B 之间的差异是 128 个 Integer 实例(1872 与 2000)。第一个假设是一种IntegerCache
影响,但在我看来它并不能解释案例 B。
问题:为什么这两个脚印不同?
细节:
java - 如何在 Java 9 上运行 jol?
我正在尝试使用jol
Java 9 运行一个程序,但没有运气。
我在以下依赖项pom.xml
:
程序很简单:
模块描述符:
当我从 IDEA 运行程序时,我看到以下输出:
我-Djdk.attach.allowAttachSelf=true
在 IDEA 中添加了 VM 参数,但没有帮助(仍然是相同的输出)。
PS我可以从类路径成功运行程序。尽管如此,如何从模块路径运行它还是很有趣的。
java - 为什么即使每个字段都是 4 字节对齐的,Java 对象中也会存在内部碎片?
介绍:
我使用JOL(Java Object Layout)工具来分析 Java 对象的内部和外部碎片以用于研究目的。
这样做时,我偶然发现了以下内容:
问题:
在这种情况下困扰我的是每个字段都是 4 字节对齐的(参见 OFFSET 列),但仍然在偏移量 56 处添加了对齐间隙(56 8 (alignment/padding gap)
)。我在 Java 9 中进行了相同的测试,对象布局发生了一些变化,对齐/填充间隙仍然存在,但甚至有 12 个字节大。
为什么会这样?为什么它有 8 个字节大,我看到的所有其他对象都是 4 个字节的内部对齐?我自己找不到解释。
我的系统:
使用默认设置(带有压缩 oops 的 ParallelOldGC)
java - java.lang.Integer 对象布局及其开销
我使用了一个名为JOL(Java Object Layout)的工具,它试图分析对象布局。它带有一个cli
,我用它来分析java.lang.Integer
。我看到 Integer 对象占用了 12 个额外的字节作为开销。该开销可以是对象所属类的地址的 4 个字节,另外 4 个用于垃圾收集,但是剩下的 4 个字节呢?我知道对象有一个整数 hashCode 值,但我不认为它是唯一的(即它不使用内存位置,而是使用原始值),因为:
日志:
java - 内存中的 Java 原始数组布局
这是我想提出问题的两个示例(假设您在JOL
这里):
还有一个使用这个的例子:
这是两个输出:
我主要了解输出,我不了解的是这些:
一般来说,对象是8 bytes
对齐的,那么为什么需要添加比需要更多的填充?
我知道一些奇怪的事情,第一个与 JOL 正在使用的 API 有关,第二个与需要隐藏的内部数据有关。
我也知道这一点,但它似乎无关,因为它意味着内部填充。
有人可以对此有所了解吗?
java - OpenJ9 VM 对象布局
OpendJDK 有一个Java 对象布局 (JOL)工具,它允许估计指定对象的实例实际内存大小。它可以显示 HotSpot 的对象布局,但在 OpenJ9 中是否相同?
java - UseCompressedOops UseCompressedClassPointers 在 jdk-13 和 jdk-15
无意间,我偶然发现了一个jdk-15
我不知道的变化。假设我有一个非常简单的问题:3 个整数数组的大小是多少?为此,我使用JOL。代码相当简单:
我运行这个jdk-13
:
我得到输出:
这很明显:
运行此示例jdk-15
会产生相同的输出,相同32 bytes
。预期的...
对于第二部分,我想禁用 JVM 优化:-XX:-UseCompressedOops
. 我运行这个jdk-13
:
好吧,也有点预期:
现在让我们运行相同的示例jdk-15
:
为什么是32 bytes
现在?怎么不40
一样了jdk-13
?
java - 运行 jol-core 异常,异常消息是“进程完成,退出代码 137(被信号 9 中断:SIGKILL)”
我正在努力解决这个问题,我可以得到你的帮助。
运行环境:
运行代码:
控制台输出结果
我只是想做一个简单的测试,结果导致了这个问题,请帮助我