2

クラス A の 1 つのインスタンスのサイズを測定しようとしました。

package pkg;
class A {
    private int i;
}

VisualVm を使用した結果は 20 バイトでした: ここに画像の説明を入力

しかし、JOL を使用した結果は 16 バイトでした:

pkg.A object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0    12        (object header)                           N/A
     12     4    int A.i                                       N/A
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

このテストに使用した完全なコードは次のとおりです。

package pkg;

import org.openjdk.jol.info.ClassLayout;

import static java.lang.System.out;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        A a = new A();
        out.println(ClassLayout.parseClass(A.class).toPrintable());
    }
}

class A {
    private int i;
}

このツールを誤用したり、その結果を誤解したりしましたか? 両方のツールで同じ結果が得られることを期待していました。

4

2 に答える 2