少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
           eclipse 有啟動參數里設置jvm大小,因為eclipse運行時自己也需要jvm,所以eclipse.ini里設置的jvm大小不是具體某個程序運行時所用jvm的大小,這和具體程序運行的jvm大小無關。 
            
            那么怎么才能設置某個程序的jvm大小呢(當然控制臺運行的話不會存在這個問題,如:java -Xms256m -Xmx1024m classname,這樣就可以把當前程序的jvm大小給設定)? 
            
            因為eclipse里默認的一個程序的jvm配置為:-Xms8m -Xmx128m,所以我們的處理耗內存比較大時需要手動調整一下,以便不會內存溢出。具體的設置方法為: 
            
            選中被運行的類,點擊菜單‘run->run...’,選擇(x)=Argument標簽頁下的vm arguments框里輸入 -Xmx512m, 保存運行就ok了 
            二、
            
            在你的TOMCAT->右擊->OPEN->在SERVER OVERVIEW 中General 中 Open launch configurtion 單擊—>選擇Argument 把默認設置去掉,在VM argument 中加一句話 :
            
             
            
             -Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M
            
             
            
            1、
            PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域OutOfMemoryError: PermGen space從表面上看就是內存益出,解決方法也一定是加大內存。說說為什么會內存益出:這一部分用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時候。
            
            改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
            2、
            
            在tomcat中redeploy時出現outofmemory的錯誤.
            
            可以有以下幾個方面的原因:
            
            1,使用了proxool,因為proxool內部包含了一個老版本的cglib.
            
            2, log4j,最好不用,只用common-logging
            
            3, 老版本的cglib,快點更新到最新版。
            
            4,更新到最新的hibernate3.2
            3、
            
            這里以tomcat環境為例,其它WEB服務器如jboss,weblogic等是同一個道理。
            一、java.lang.OutOfMemoryError: PermGen space
            PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域,
            這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中,
            它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對
            PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤,
            這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小
            超過了jvm默認的大小(4M)那么就會產生此錯誤信息了。
            解決方法: 手動設置MaxPermSize大小
            
            修改TOMCAT_HOME/bin/catalina.sh
            在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:
            JAVA_OPTS=”-server -XX:PermSize=64M -XX:MaxPermSize=128m
            建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以達到減少jar 文檔重復占用內存的目的。
            
            二、java.lang.OutOfMemoryError: Java heap space
            Heap size 設置
            JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,
            其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可
            進行設置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
            提示:在JVM中如果98%的時間是用于GC且可用的Heap size 不足2%的時候將拋出此異常信息。
            提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。
            解決方法:手動設置Heap size
            修改TOMCAT_HOME/bin/catalina.sh
            在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:
            JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:MaxNewSize=256m”
            
            三、實例,以下給出1G內存環境下java jvm 的參數設置參考:
            
            JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”
            
             
            
            經過查找資料,先看下JAVA_OPTS參數表示的意義。 
            
            -server:一定要作為第一個參數,在多個CPU時性能佳
            -Xms:初始Heap大小,使用的最小內存,cpu性能高時此值應設的大一些
            -Xmx:java heap最大值,使用的最大內存
            上面兩個值是分配JVM的最小和最大內存,取決于硬件物理內存的大小,建議均設為物理內存的一半。-XX:PermSize:設定內存的永久保存區域
            -XX:MaxPermSize:設定最大內存的永久保存區域
            -XX:MaxNewSize:
            -Xss 15120 這使得JBoss每增加一個線程(thread)就會立即消耗15M內存,而最佳值應該是128K,默認值好像是512k.
            +XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。
            -Xss:每個線程的Stack大小
            -verbose:gc 現實垃圾收集信息
            -Xloggc:gc.log 指定垃圾收集日志文件
            -Xmn:young generation的heap大小,一般設置為Xmx的3、4分之一
            -XX:+UseParNewGC :縮短minor收集的時間
            -XX:+UseConcMarkSweepGC :縮短major收集的時間
            提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。
            
            穩定的開發架構環境下,建議出一份有實踐、經驗論證的JAVA_OPTS配置,能夠非常切合實際的服務于當前開發、測試的軟件流程。
            
          posted on 2012-11-13 14:14 abin 閱讀(23451) 評論(1)  編輯  收藏 所屬分類: eclipse

          Feedback

          # re: eclipse java.lang.OutOfMemoryError: Java heap space 2014-11-17 14:53 我是小明
          解決問題了。。非常感謝  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 富宁县| 成安县| 达州市| 屏东县| 益阳市| 嵩明县| 西林县| 南部县| 阳原县| 溧阳市| 南阳市| 广州市| 江安县| 天门市| 福泉市| 宁城县| 五大连池市| 林芝县| 开阳县| 即墨市| 灌云县| 津南区| 华坪县| 余干县| 孟连| 江陵县| 赤城县| 兰考县| 安泽县| 长治市| 永寿县| 仙居县| 城固县| 四平市| 思茅市| 墨竹工卡县| 固安县| 岳西县| 株洲县| 民权县| 塔城市|