简体   繁体   English

.NET是否具有Java的permgen之类的东西?

[英]Does .NET have something like Java's permgen?

So I've got a pretty standard spring, hibernate, tomcat environment.. yet I'm getting permgens locally and on CI. 因此,我有一个非常标准的春季,休眠,tomcat环境。.但是我在本地和CI上获得了permgens。

I know there is a TEMPORARY fix (ie increasing the memory assigned to permgen) but this still is only temporary. 我知道有一个临时修复程序(即增加分配给permgen的内存),但这仍然只是暂时的。 I'd rather not imagine what a production environment looks like given what I'm seeing. 考虑到我所看到的,我宁愿不要想象生产环境是什么样的。

(a bit of a comparison question) In .NET I have not seen anything similar. (一个比较问题)在.NET中,我没有看到任何类似的东西。 Does .NET have its version of permgen? .NET是否有其permgen版本?

(in case you do not know what permgen is Significance of PermGen Space ) (以防您不知道什么是permgen是PermGen Space的意义

There is no such thing in the CLR. CLR中没有这样的东西。 Just a ordinary heap. 只是一个普通的堆。 The garbage collector (GC) is generational, with three generations. 垃圾收集器(GC)具有三代功能。 One for young objects, one for long living and one for very long living objects. 一种用于年轻物体,一种用于长寿命物体,另一种用于非常长寿命物体。 There is also a lage object heap (LOH). 还有一个标记对象堆(LOH)。 The GC treats the LOH a bit differently in order to increase efficiency. GC对LOH的处理方式有所不同,以提高效率。 See Large Object Heap Uncovered 查看发现的大对象堆

No, the CLR (C# is "just" a CLR language) does not have a permanent generation, see Fundamentals of Garbage Collection . 不,CLR(C#是“仅”一种CLR语言)没有永久的一代,请参见《垃圾收集基础》

Btw, future versions of the JVM - currently expected at the latest for Java 8 - won't have permgen either (see Oracle discusses Java 7 & 8 new features on video ) (basically as a result of "merging" the "classic" Sun HotSpot VM that has permgen and JRockit JVM). 顺便说一句,JVM的未来版本(目前有望在Java 8上最新发布)也不会具有permgen(请参阅Oracle在视频中讨论Java 7和8的新功能 )(基本上是“融合”“经典” Sun的结果)具有permgen和JRockit JVM的HotSpot VM。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM