什么是烫发空间?

2022-08-31 11:29:59

在学习Java内存分析时,除了“堆”之外,我还不断看到术语“perm space”。我知道堆是什么 - 什么是烫发空间?


答案 1

它代表永久生成

永久生成是特殊的,因为它包含描述用户类(不属于 Java 语言的类)的元数据。此类元数据的示例是描述类和方法的对象,它们存储在永久生成中。具有大型代码库的应用程序可以快速填满堆的这一部分,这将导致: PermGen,无论您的-Xmx有多高,机器上有多少内存。java.lang.OutOfMemoryError


答案 2

Perm space用于保留已加载类的信息,以及一些其他高级功能,例如(用于高度优化的字符串相等性测试),这些功能通常由方法创建。随着您的应用程序(类数)的增长,此空间将很快被填满,由于此空间上的垃圾回收无法根据需要进行清理,因此您很快就会得到内存不足:烫发生成空间错误。之后,即使有一个巨大的空JVM,任何应用程序也不会在该机器上有效运行。String PoolString.intern()

在开始应用程序之前,您应该摆脱此错误。java -XX:MaxPermSize


推荐