所以我有一个非常标准的 spring、hibernate、tomcat 环境......但我在本地和 CI 上获得了 permgens。
我知道有一个临时修复(即增加分配给 permgen 的内存),但这仍然只是暂时的。鉴于我所看到的,我宁愿不去想象生产环境是什么样子。
(有点比较问题)在 .NET 中我没有看到任何类似的东西。.NET 有它的 permgen 版本吗?
(如果您不知道 permgen 是PermGen Space 的意义)
所以我有一个非常标准的 spring、hibernate、tomcat 环境......但我在本地和 CI 上获得了 permgens。
我知道有一个临时修复(即增加分配给 permgen 的内存),但这仍然只是暂时的。鉴于我所看到的,我宁愿不去想象生产环境是什么样子。
(有点比较问题)在 .NET 中我没有看到任何类似的东西。.NET 有它的 permgen 版本吗?
(如果您不知道 permgen 是PermGen Space 的意义)
CLR 中没有这样的东西。只是一个普通的堆。垃圾收集器 (GC) 是分代的,分为三代。一种用于年轻的物体,一种用于长寿的物体,一种用于非常长寿的物体。还有一个大对象堆(LOH)。GC 对 LOH 的处理方式略有不同,以提高效率。请参阅未覆盖的大对象堆
不,CLR(C#“只是”一种 CLR 语言)没有永久代,请参阅垃圾收集基础。
顺便说一句,JVM 的未来版本——目前预计最迟用于 Java 8——也不会有 permgen(参见Oracle 在视频中讨论 Java 7 和 8 的新特性)(基本上是“合并”“经典”Sun 的结果具有 permgen 和 JRockit JVM 的 HotSpot VM)。