精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學習啦>學習電腦>電腦硬件知識>內(nèi)存知識>

      weblogic jvm內(nèi)存查看的分類

      時間: 樂恒1051 分享

        調(diào)整weblogic jvm內(nèi)存參數(shù)大小,其中的原理是什么?為此學習啦小編為大家整理推薦了查到的相關信息,希望大家喜歡。

        weblogic jvm內(nèi)存

        調(diào)整 jvm參數(shù) A:JVM啟動參數(shù)共分為三類:

        其一是標準參數(shù)(-),所有的JVM實現(xiàn)都必須實現(xiàn)這些參數(shù)的功能,而且向后兼容;

        其二是非標準參數(shù)(-X),指的是JVM底層的一些配置參數(shù),這些參數(shù)在一般開發(fā)中默認即可,不需要任何配置。但是在生產(chǎn)環(huán)境中,并不保證所有jvm實現(xiàn)都滿足,所以為了提高性能,往往需要調(diào)整這些參數(shù),以求系統(tǒng)達到最佳性能。另外這些參數(shù)不保證向后兼容,也即是說“如有變更,恕不在后續(xù)版本的JDK通知”(這是官網(wǎng)上的原話);

        其三是非Stable參數(shù)(-XX),這類參數(shù)在jvm中是不穩(wěn)定的,不適合日常使用的,后續(xù)也是可能會在沒有通知的情況下就直接取消了,需要慎重使用。

        B:而JVM 內(nèi)存又可分為三個主要的域 :

        新域、舊域以及永久域。JVM生成的所有新對象放在新域中。一旦對象經(jīng)歷了一定數(shù)量的垃圾收集循環(huán)后,便進入舊域。而在永久域中是用來存儲JVM自己的反射對象的,如class和method對象,而且GC(Garbage Collection)不會在主程序運行期對永久域進行清理。其中新域和舊域?qū)儆诙?,永久域是一個獨立域并且不認為是堆的一部分。

        C:各主要參數(shù)的作用如下 :

        -Xms:設置jvm內(nèi)存的初始大小

        -Xmx:設置jvm內(nèi)存的最大值

        -Xmn:設置新域的大小(這個似乎只對 jdk1.4來說是有效的,后來就廢棄了)

        -Xss:設置每個線程的堆棧大小(也就是說,在相同物理內(nèi)存下,減小這個值能生成更多的線程)

        -XX:NewRatio :設置新域與舊域之比,如-XX:NewRatio = 4就表示新域與舊域之比為1:4

        -XX:NewSize:設置新域的初始值

        -XX:MaxNewSize :設置新域的最大值

        -XX:PermSize:設置永久域的初始值

        -XX:MaxPermSize:設置永久域的最大值

        -XX:SurvivorRatio=n:設置新域中Eden區(qū)與兩個Survivor區(qū)的比值。(Eden區(qū)主要是用來存放新生的對象,而兩個 Survivor區(qū)則用來存放每次垃圾回收后存活下來的對象)

        D:常見的錯誤 :

        java.lang.OutOfMemoryError相信很多開發(fā)人員都用到過,這個主要就是JVM參數(shù)沒有配好引起的,但是這種錯誤又分兩種:java.lang.OutOfMemoryError: Java heap space和java.lang.OutOfMemoryError: PermGen space,其中前者是有關堆內(nèi)存的內(nèi)存溢出,可以同過配置-Xms和-Xmx參數(shù)來設置,而后者是有關永久域的內(nèi)存溢出,可以通過配置 -XX:MaxPermSize來設置。

        下面是個例子,請根據(jù)實際情況進行修改,修改run.conf文件中的如下內(nèi)容:

        JAVA_OPTS="-Xms256m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform.mbeanserver"

        日志文件設置:

        jbossserverdefaultlog

        若需要修改JBoss默認的log4j設置,可修改JBoss安裝目錄"serverdefaultconf下的jboss-log4j.xml文件,在該文件中可以看到,log4j的日志輸出在JBoss安裝目錄"server

        如果使用log4j日志框架,將配置文件放在工程目錄下的話容易引起與jboss日志配置的沖突,一個比較好的方式就是將日志配置到jboss的 jboss-log4j.xml文件中,文件的目錄是($JBOSS)/server/default/conf。在配置文件中添加以下內(nèi)容:

        <appender name="myLog" class="org.apache.log4j.DailyRollingFileAppender">

        <!--設置通道名稱是:file,輸出方式DailyRollingFileAppender-->

        <param name="File" value="${jboss.server.home.dir}/log/Mqs.log"/>

        <!--日志文件路徑和文件名稱 -->

        <param name="Append" value="true"/>

        <!-- 設置是否在重新啟動服務時,在原有日志的基礎添加新日志 -->

        <!-- Rollover at midnight each day -->

        <param name="DatePattern" value="'.'yyyy-MM-dd"/>

        <!-- Rollover at the top of each hour

        <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>

        -->

        <layout class="org.apache.log4j.PatternLayout">

        <!-- The default pattern: Date Priority [Category] Message/n -->

        <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

        <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message/n

        <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>

        -->

        </layout>

        </appender>

        <logger name="com.all" additivity="false" >

        <level value="INFO" />

        <appender-ref ref="myLog"/>

        </logger>

        在web工程中使用日志的時候就可以這樣寫

        Logger log = Logger.getLogger("com.all");

        log.debug("test");

        其中"com.all"與<logger name="com.all" additivity="false" > 中的name屬性值對應。additivity屬性非常重要,它表示是否繼承root配置的輸出通道,默認配置是true,如果不將其設為false的話會導致日志重復輸出到控制臺與jboss的日志文件中。

      2946836