【问题标题】:What is perm space?什么是烫发空间?
【发布时间】:2010-11-19 17:59:58
【问题描述】:

在学习 java 内存分析时,除了“堆”之外,我不断看到术语“永久空间”。我知道堆是什么——烫发空间是什么?

【问题讨论】:

标签: java profiling


【解决方案1】:
  • JVM 具有 Java 对象的内部表示和这些内部表示 存储在堆中(在年轻代或老年代)。
  • JVM 还具有 Java 类的内部表示,以及那些 存储在永久代中

【讨论】:

    【解决方案2】:

    Permgen 空间总是被称为方法区。当类加载器子系统将类文件(字节码)加载到方法区(permGen)时。 它包含所有类元数据,例如:类的完全限定名、直接父类的完全限定名、变量信息、构造函数信息、常量池信息等。

    【讨论】:

      【解决方案3】:

      PremGen 下存在的内容:类区域属于 PremGen 区域。静态字段也是在类加载时开发的,因此它们也存在于 PremGen 中。具有所有像 String 一样池化的不可变字段的常量池区域保留在这里。除此之外,还定位了类加载器加载的类数据、对象数组、jvm使用的内部对象。

      【讨论】:

        【解决方案4】:

        Perm Gen 代表永久生成,它保存有关类的元数据信息。

        1. 假设如果您创建一个类名 A,它的实例变量将存储在堆内存中,而类 A 和静态类加载器将存储在永久代中。
        2. 垃圾收集器会发现很难清除或释放永久代内存中存储的内存空间。因此,始终建议将 permgen 内存设置保持在建议的限制范围内。
        3. JAVA8 引入了元空间生成的概念,因此当您使用 jdk 1.8 版本时不再需要 permgen。

        【讨论】:

          【解决方案5】:

          PermGen Space 代表永久生成的内存分配所有 Java 不可变对象都属于此类别,例如 String 它是使用文字或 String.intern() 方法创建的,用于将类加载到内存中。 PermGen Space 加速了我们的字符串相等搜索。

          【讨论】:

            【解决方案6】:

            Perm space 用于保存已加载类的信息和一些其他高级功能,如String Pool(用于高度优化的字符串相等测试),通常由String.intern() 方法创建。 随着您的应用程序(类数量)的增长,这个空间将很快被填满,因为这个空间上的垃圾收集并不能按要求进行清理,所以您很快就会出现内存不足:perm gen space 错误。之后,即使有一个巨大的空 JVM,应用程序也不会在该机器上有效运行。

            在启动您的应用程序之前,您应该java -XX:MaxPermSize 以消除此错误。

            【讨论】:

            • 字符串池从 java 7 开始转移到堆空间。
            【解决方案7】:

            简单(而且过于简单)的答案:它是 jvm 存储自己的簿记数据的地方,而不是您的数据。

            【讨论】:

              【解决方案8】:

              它包含类定义、字符串池等内容。我猜你可以称之为元数据。

              【讨论】:

                【解决方案9】:

                permgen 空间是堆的区域,用于保存虚拟机本身的所有反射数据,例如类和方法对象。

                【讨论】:

                  【解决方案10】:

                  代表permanent generation

                  永久代是特殊的 因为它包含描述的元数据 用户类(不是 Java 语言的一部分)。例子 这些元数据是对象 描述类和方法以及 它们存储在永久 一代。大型应用 代码库可以快速填满这个 将导致的堆段 java.lang.OutOfMemoryError: PermGen 没有 不管你的 -Xmx 有多高和多少 机器上的内存。

                  【讨论】:

                  • 安德鲁,我只是想知道 PerGen 的大小是多少?
                  • 只是好奇 permgen 是堆内存的一部分(如本答案所述)还是堆外(如本答案所述 - stackoverflow.com/a/31103100/3061686)。
                  猜你喜欢
                  • 2011-03-23
                  • 2013-11-25
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-04-24
                  相关资源
                  最近更新 更多