最近项目中发生了java.lang.OutOfMemoryError: PermGen space error这样的错误,所以就去网上找了好多关于PermGen的内容,顺便也树立了一下Java的内存模型。下面讲讲到我为什么会发生这样的错误。
首先,在这里添几个链接,我是在这些文章中提取的找到相应的内容的。
http://www.integratingstuff.com/2011/07/24/understanding-and-avoiding-the-java-permgen-space-error/
http://plumbr.eu/blog/what-is-a-permgen-leak#samples
http://wiki.apache.org/tomcat/MemoryLeakProtection
https://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generation
http://plumbr.eu/blog/what-is-a-memory-leak
http://en.wikipedia.org/wiki/Java_Memory_Model
http://www.cs.umd.edu/~pugh/java/memoryModel/
http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/
Java的内存模型,以及每一块是放什么的?
基于上面的内容,再分析PermGen里面是放什么的,以及为什么会溢出
一个简单的例子,加载无数的类到内存
另外一个例子,tomcat上的例子,deploy以及undeploy