gpt4 book ai didi

java - Enum 占用多少内存?

转载 作者:IT老高 更新时间:2023-10-28 13:58:13 31 4
gpt4 key购买 nike

例如,如果我有一个包含两种情况的枚举,它是否比 boolean 值占用更多的内存?语言:Java、C++

最佳答案

在 Java 中,enum is a full-blown class :

Java programming language enum types are much more powerful than their counterparts in other languages. The enum declaration defines a class (called an enum type). The enum class body can include methods and other fields.

为了查看每个 enum 的实际大小,让我们创建一个实际的 enum 并检查它创建的 class 文件的内容.

假设我们有以下 Constants 枚举类:

public enum Constants {
ONE,
TWO,
THREE;
}

编译上面的 enum 并用 javap 反汇编生成的 class 文件得到以下结果:

Compiled from "Constants.java"
public final class Constants extends java.lang.Enum{
public static final Constants ONE;
public static final Constants TWO;
public static final Constants THREE;
public static Constants[] values();
public static Constants valueOf(java.lang.String);
static {};
}

反汇编表明 enum 的每个字段都是 Constants enum 类的实例。 (使用 javap 进一步分析会发现每个字段都是通过在静态初始化 block 中调用 new Constants(String) 构造函数来创建一个新对象来初始化的。)

因此,我们可以看出,我们创建的每个 enum 字段将至少与在 JVM 中创建对象的开销一样多。

关于java - Enum 占用多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/143285/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com