.NET有类似于Java的permgen吗?

3
所以我有一个相当标准的Spring、Hibernate、Tomcat环境...但我在本地和CI上都遇到了permgens问题。 我知道有一个临时解决方法(即增加分配给permgen的内存),但这仅是临时的。鉴于我所看到的情况,我宁愿不去想象生产环境会是什么样子。
(一个比较问题)在.NET中,我没有看到任何类似的东西。.NET是否有其自己的permgen版本?
(如果您不知道permgen是什么,请访问PermGen空间的重要性

1
你正在运行Spring、Hibernate和Tomcat...用C#?我很困惑。 - aquinas
2
这不是C#的问题,而是CLR的问题。C#只是一种语言。 - Ben Robinson
2
你可以更详细地描述一下PermGen及其属性。不确定你的第二段与其余部分有何关联。那么你对什么感兴趣呢? - CodesInChaos
1
如果您不知道什么是PermGen,请参见此链接:https://dev59.com/xXE95IYBdhLWcg3wmvGh - user48545
2个回答

3

在CLR中没有这种东西。只有一个普通的堆。垃圾回收器(GC)是分代的,有三个代。一个是用于年轻对象,一个是用于长寿命对象,另一个是用于非常长寿命对象。还有一个大对象堆(LOH)。为了提高效率,GC会以略微不同的方式处理LOH。请参见Large Object Heap Uncovered


对于interned字符串呢?它们不是有效的“permgen”吗? - user2864740
实习是针对字符串字面量(即在源代码中以纯文本形式可见的字符串)进行的,但不适用于在运行时动态创建的字符串。您不能将其用作通用内存管理系统。 - Olivier Jacot-Descombes

1

不,CLR(C#仅是CLR语言)没有永久代,请参见垃圾回收基础

顺便说一下,JVM的未来版本 - 目前预计最晚在Java 8中 - 也不会有permgen(请参见Oracle讨论Java 7&8新功能视频)(基本上是由于“合并”具有permgen和JRockit JVM的“经典”Sun HotSpot VM的结果)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接