如果编译像这样的枚举
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();}因此,枚举的实例是类本身的静态成员。然后,我认为可以进行垃圾回收的唯一方法是,如果类本身是垃圾回收,那么如果它是由系统类加载器加载的,则不太可能发生。



