Skip to main content

Home/ InfokeyDEV/ Group items tagged cglib

Rss Feed Group items tagged

Benx Shen

Preventing Java's java.lang.OutOfMemoryError: PermGen space failure | Eric's Agile Answers - 0 views

  • The "OutOfMemoryError: PermGen space" message is normally encountered during development activites where a long-running JVM is asked to load/unload builds.
  • The message is a symptom of an incomplete garbage collection sweep where resources are not properly released upon unload/restart. There is no shortage of debate (Hibernate forum, Sun forum, Spring Framework forum ) regarding which codebase is responsible for this symptom, but the finger of blame has been pointed at CGLIB, Hibernate, Tomcat, and even Sun's JVM.
  • In my experience, the most pain-free method of resolving this issue is to switch from Sun's JDK implementation to BEA's freely available JRockit implementation.
  • ...1 more annotation...
  • On a recent project utilizing Tomcat 5.5.12 with Hibernate, I was plagued with this PermGen error, at times even experiencing it during web-based unit testing. Since making the switch to JRockit, I have not encountered this issue even once.
  •  
    又是一位和我一樣都慘遭 "PermGen Space" 錯誤的開發者了!
    很奇怪,為何會發生這樣的錯誤呢?
    其中這篇文章所提到的技術,恰巧都是我現在所發生問題的架構,像是 Hibernate, Spring, Tomcat 等,還有 Sun JVM.... Orz
    比較特別的是,多數提供的解決方式,都是去調整 JVM 的設定(-XX:MaxPermSize=256m)。這位老兄則是採用了 BEA JRockit 版本的 JVM 解決此問題,他表示至少這招對他是管用的!
    不過,軟體開發很多時候都會發生這種「魔咒」,這種狀況底下,就好像一個並無可醫的人,只好嘗試各種偏方了!

Benx Shen

分析java.lang.OutOfMemoryError: PermGen space - 0 views

  • 發現很多人把問題歸因於: spring,hibernate,tomcat,因為他們動態產生類,導致JVM中的permanent heap溢出 。然後解決方法眾說紛紜,有人說升級 tomcat版本到最新甚至乾脆不用tomcat。還有人懷疑spring的問題,在spring論壇上討論很激烈,因為spring在AOP時使用CBLIB會動態產生很多類。
  • 於是有人對更基礎的JVM做了檢查,發現了問題的關鍵。原來SUN 的JVM把內存分了不同的區,其中一個就是permenter區用來存放用得非常多的類和類描述。
  • 對這個bug最徹底的解決辦法就是不要用SUN的JDK,而改用BEA的 JRokit.
1 - 3 of 3
Showing 20 items per page