<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    $TOMCAT_HOME$/CATALINA.BAT第一行,增加

    set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx900m -Duser.timezone=GMT+08

    =================================================================================================================================

    $JONAS_HOME/bin/unix/jonas 中:
    export JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128M -DFF_HOME=$JONAS_ROOT/ffhome"
    '-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】'

    http://jasli.itpub.net/post/15912/300322

    =================================================================================================================================

    The JAVA_OPTS environment variable can be used to specify additional arguments to the JVM JBoss will be run in. These can be set as regular environment variables on the platform, in the startup script (run.sh or run.bat, or (when using run.sh) in run.conf.

    Some examples:

    Memory settings
    JAVA_OPTS="-server -Xms128m -Xmx512m"

    JDK 1.3.1 JPDA settings
    JAVA_OPTS="-classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

    JDK 1.4.1 JPDA settings
    JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"

    Setting Jetty webserver port
    JAVA_OPTS=-Djetty.port=80

    -server

    -Xms 00m

    -Xmx 00m

    -Xss 00k

    +XX:AggressiveHeap

    +XX:AggressiveHeap:會使得 Xms 1220m沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。 另外Xmx作為允許jvm使用的最大內存數量,不應該超過物理內存的90%。

    Xss 00k :這使得JBoss每增加一個線程(thread)就會立即消耗15M內存,而最佳值應該是128K,默認值好像是512k.

    1.修改JAVA_OPTS,去掉+XX:AggressiveHeap,修改Xss。現在的JAVA_OPTS為:
    -Xms 520m -Xmx 900m -Xss 128k
    2.修改deploy/jbossweb-tomcat55.sar/service.xml
    將maxThreads根據目前的訪問量由默認的250降為75,并使用jboss 4默認未寫在標準service.xml里面而jboss 3寫入了的2個參數: maxSparseThreads=55,minSparseThreads=25
    3.修改了oracle-ds.xml將最大連接數有150降為50.
    4.去掉了一些不用的服務。

    =================================================================================================================================

    Tomcat 的JVM 內存溢出問題的解決  好久沒有遇到這個問題了,最近做的項目有些多,并且同時發布到一個Tomcat下,沒多長時間可愛的Tomcat就會被撐死,試著改了幾個參數,但是問題依舊,可能是因為每個項目都是用的ssh架構,初始化內存占用太大,也可能是代碼寫的有問題,沒有釋放內存,明天用測試工具測試下。另外這種WebServer搭建結構很不合理,服務也不健壯;一定要改一改。下班回家路上想將WebServer轉移到一臺空閑的PC Server上,使用Apache+N個Tomcat實例,將應用分散到幾個Tomcat實例下,我想這樣情況可能會好很多。

    先看下面解決問題的方法,沒有嘗試過,但是覺得很合理,明天到單位試一下。


    【轉】Tomcat 的JVM 內存溢出問題的解決
    關于內存溢出問題轉帖,備查。
    【轉自】http://ahut9923.javaeye.com/blog/236859

    1、首先是: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.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
    Java代碼
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m  

    set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

    或修改catalina.sh
    在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
    JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

    2、其次是: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)那么就會產生此錯誤信息了。

    解決方法:

    1. 手動設置MaxPermSize大小
    修改TOMCAT_HOME/bin/catalina.bat(Linux下為catalina.sh),在Java代碼
    “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:   
    set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m  

    “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
    set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

    catalina.sh下為:
    Java代碼
    JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" 

    JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"


    另外看到了另外一個帖子,覺得挺好,摘抄如下:
    分析java.lang.OutOfMemoryError: PermGen space

    發現很多人把問題歸因于: spring,hibernate,tomcat,因為他們動態產生類,導致JVM中的permanent heap溢出 。然后解決方法眾說紛紜,有人說升級 tomcat版本到最新甚至干脆不用tomcat。還有人懷疑spring的問題,在spring論壇上討論很激烈,因為spring在AOP時使用 CBLIB會動態產生很多類。

    但問題是為什么這些王牌的開源會出現同一個問題呢,那么是不是更基礎的原因呢?tomcat在Q&A很隱晦的回答了這一點,我們知道這個問題,但這個問題是由一個更基礎的問題產生。

    于是有人對更基礎的JVM做了檢查,發現了問題的關鍵。原來SUN 的JVM把內存分了不同的區,其中一個就是permenter區用來存放用得非常多的類和類描述。本來SUN設計的時候認為這個區域在JVM啟動的時候就固定了,但他沒有想到現在動態會用得這么廣泛。而且這個區域有特殊的垃圾收回機制,現在的問題是動態加載類到這個區域后,gc根本沒辦法回收!


    對于以上兩個問題,我的處理是:

    在catalina.bat的第一行增加:
    Java代碼
    set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m  

    set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

    在catalina.sh的第一行增加:
    Java代碼
    JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

    備注: http://www.jbsolutions.net.in/out_of_memory_issue.html

    =================================================================================================================================

    http://publib.boulder.ibm.com/wasce/V2.1.0/zh_CN/javaopts.html

    JAVA_OPTS 環境變量

    使用以下命令時,在執行該命令之前,可通過設置 JAVA_OPTS 環境變量將額外的選項傳遞給 Java 虛擬機。

    初始堆大小

    要指定 Java 虛擬機的初始堆大小,請在啟動服務器之前,將下列選項包含在 JAVA_OPTS 環境變量中:

    -XmsIm
    其中 I 由初始堆大小替換(單位:MB)。

    最大堆大小

    要指定 Java 虛擬機的最大堆大小,請在服務器啟動之前,在 JAVA_OPTS 環境變量中包含以下選項:

    -XmxMm
    其中 M 由最大堆大小替換(單位:MB)。

    以大頁面分配堆

    要指定以大頁面分配堆,請在啟動服務器之前,將下列選項包含在 JAVA_OPTS 環境變量中:

    -Xlp
    指定以大頁面分配堆。

    啟用代理服務器

    請考慮服務器由防火墻保護的情況。服務器可能仍需要訪問防火墻以外的站點,例如,使用管理控制臺來訪存并安裝 JDBC 驅動程序。如果必須將服務器配置為使用代理服務器訪問外部資源,請在啟動服務器之前,將下列選項包含在 JAVA_OPTS 環境變量中:

    -DproxySet=true
    配置 Java 虛擬機以使用代理服務器。
    -DproxyHost=host
    其中 host 是運行代理服務器的主機。
    -DproxyPort=port
    其中 port 是代理服務器偵聽的端口。

    定制日志記錄

    如果希望對服務器中的日志記錄進行更精密的控制,那么您可以指定自己的日志記錄設置,并在啟動服務器之前在 JAVA_OPTS 環境變量中提供單獨的 log4j.xml 文件。以下選項將覆蓋 \var\log 目錄下的 XYZ-log4j.properties 文件中定義的設置。

    -Dorg.apache.geronimo.log4jservice.configuration=filename
    其中,filename 必須是標準的文件名,它是相對于服務器實例目錄位置的。
    posted on 2010-09-20 16:34 rogerfan 閱讀(3609) 評論(0)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 亚洲伊人久久大香线蕉啊| 亚洲精品资源在线| a级毛片免费观看在线| 国产一级淫片a视频免费观看| 亚洲中文字幕一区精品自拍| 免费电影在线观看网站| 亚洲成年网站在线观看| 破了亲妺妺的处免费视频国产| 亚洲欧美日韩久久精品| 日本不卡视频免费| 人禽伦免费交视频播放| 国产亚洲日韩在线三区| 久久免费精彩视频| 亚洲另类春色国产精品| 免费毛片在线视频| 国产精品免费久久久久久久久| 亚洲av午夜福利精品一区| 四虎永久在线精品免费观看视频| 一本色道久久88亚洲精品综合| 日韩特黄特色大片免费视频| 日韩大片在线永久免费观看网站| 亚洲另类激情综合偷自拍图| 亚洲精品免费在线| 亚洲av无码成人精品区一本二本| 精品亚洲视频在线观看| 久久青草免费91观看| 亚洲中文字幕久久无码| 国产福利电影一区二区三区,亚洲国模精品一区 | 日本一区午夜艳熟免费| 久久久久亚洲精品日久生情| 好吊妞998视频免费观看在线| 香蕉国产在线观看免费| 亚洲AV无码国产精品色午友在线 | 亚洲AV综合永久无码精品天堂| 亚洲日本va午夜中文字幕久久| 久久免费精品一区二区| 亚洲精品欧美综合四区| 亚洲AV无码成人专区片在线观看 | 久久国产精品免费| 亚洲精品中文字幕无乱码麻豆| 亚洲精品网站在线观看不卡无广告|