在Java中,匿名类不会占用PermGeneration或MetaGeneration。在Java 8之前的版本中,PermGeneration是用于存储类的元数据和常量池等信息的区域,而MetaGeneration是Java 8中引入的用于存储类的元数据的区域。然而,匿名类的定义是在堆中进行的,而不是在PermGeneration或MetaGeneration中。匿名类的定义会在运行时动态地生成,并且会被加载到堆中的新对象中。因此,匿名类不会占用PermGeneration或MetaGeneration。
需要注意的是,Java 8之后的版本已经移除了PermGeneration,取而代之的是MetaSpace。MetaSpace是在堆外分配的内存空间,用于存储类的元数据信息。同样地,匿名类的定义也不会占用MetaSpace。
总结起来,无论是在Java 8之前的版本还是Java 8之后的版本,匿名类的定义都不会占用PermGeneration、MetaGeneration或MetaSpace。匿名类的定义是在堆中进行的。
领取专属 10元无门槛券
手把手带您无忧上云