gpt4 book ai didi

java - 垃圾收集器是否在 Enum 类型上运行?

转载 作者:IT老高 更新时间:2023-10-28 20:57:43 25 4
gpt4 key购买 nike

根据jls § 8.9.2 Enum Body Declarations

It is a compile-time error for an enum declaration to declare a finalizer. An instance of an enum type may never be finalized.

由于终结器在垃圾收集器运行之前执行,如果终结器不存在,这是否意味着 enum 类型始终保持加载在内存中,并且垃圾收集器不适用于 enum输入?

最佳答案

如果你编译一个像这样的枚举

enum Suit {SPADES, HEARTS, CLUBS, DIAMONDS}

你会看到生成的字节码(即javap -p Suit)对应一个合成类:

final class Suit extends java.lang.Enum<Suit> {
public static final Suit SPADES;
public static final Suit HEARTS;
public static final Suit CLUBS;
public static final Suit DIAMONDS;
private static final Suit[] $VALUES;
public static Suit[] values();
public static Suit valueOf(java.lang.String);
private Suit();
}

因此,枚举的实例是类本身的静态成员。那么我认为唯一可以进行垃圾收集的方法是类本身被垃圾收集,如果它是由系统类加载器加载的,这种情况不太可能发生。

关于java - 垃圾收集器是否在 Enum 类型上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525768/

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