• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      jvm內存調優經驗總結

       風自向前 2010-07-13

      JVM 調優,是個很簡單也很復雜的話題,由于經常遇到這類問題,在這里總結一下。

      先從解決bug開始,當Java程序申請內存,超出VM可分配內純的時候,VM首先可能會GC,如果GC完還是不夠,或者申請的直接超夠VM可能有的,就會拋出內 存溢出異常。從VM規范中我們可以得到,一下幾種異常。

      java.lang.StackOverflowError:(很少)
      java.lang.OutOfMemoryError:heap space(比較常見)
      java.lang.OutOfMemoryError: PermGen space (經常出現)

      java.lang.OutOfMemoryError: GC overhead limit exceeded(某項操作使用大量內存時發生)

      以下分別解釋一下,從最常見的開始:

      java.lang.OutOfMemoryError: PermGen space 這個異常比較常見,是說JVM里的Perm內 存區的異常溢出,由于JVM在默認的情況下,Perm默認為64M,而很多程序需要大量的Perm區內 存,尤其使用到像Spring等框架的時候,由于需要使用到動態生成類,而這些類不能被GC自動釋放,所以導致OutOfMemoryError: PermGen space異常。解決方法很簡單,增大JVM的 -XX:MaxPermSize 啟動參數,就可以解決這個問題,如過使用的是默認變量通常是64M[5.0 and newer: 64 bit VMs are scaled 30% larger; 1.4 amd64: 96m; 1.3.1 -client: 32m.],改成128M就可以了,-XX:MaxPermSize=128m。如果已經是128m(Eclipse已經是128m了),就改成 256m。我一般在服務器上為安全起見,改成256m。

      java.lang.OutOfMemoryError:heap space或其它OutOfMemoryError,這個異常實際上跟上面的異常是一個異常,但解決方法不同,所以分開來寫。上面那個異常是因為JVM的perm區內 存區分少了引起的(JVM的內 存區分為 young,old,perm三種)。而這個異常是因為JVM堆內 存或者說總體分少了。解決方法是更改 -Xms -Xmx 啟動參數,通常是擴大1倍。xms是管理啟動時最小內 存量的,xmx是管里JVM最大的內 存量的。
      注:OutOfMemoryError可能有很多種原因,根據JVM Specification, 可能有一下幾種情況,我先簡單列出。stack:stack分區不能動態擴展,或不足以生成新的線程。Heap:需要更多的內 存,而不能獲得。Method Area :如果不能滿足分配需求。runtime constant pool(從Method Area分配內 存)不足以創建class or interface。native method stacks不能夠動態擴展,或生成新的本地線程。

       

      java.lang.OutOfMemoryError: GC overhead limit exceeded,這個是JDK6新添的錯誤類型。是發生在GC占用大量時間為釋放很小空間的時候發生的,是一種保護機制。我在JSP導大Excel的時候碰到過。最終解決方案是,關閉該功能,使用—— -XX:-UseGCOverheadLimit

      最后說說java.lang.StackOverflowError,老實說這個異常我也沒碰見過,但JVM Specification就提一下,規范上說有一下幾種境況可能拋出這個異常,一個是Stacks里的線程超過允許的時候,另一個是當native method要求更大的內 存,而超過native method允許的內 存的時候。根據SUN的文檔,提高-XX:ThreadStackSize=512的值。

      總的來說調優JVM的內 存,組要目的就是在使用內 存盡可能小的,使程序運行正常,不拋出內 純溢出的bug。而且要調好最小內 存,最大內 存的比,避免GC時浪費太多時間,尤其是要盡量避免FULL GC。

       

      補充:由于JDK1.4新增了nio,而nio的buffer分配內存比較特殊(讀寫流可以共享內存)。如果有大量數據交互,也可能導致java.lang.OutOfMemoryError。相應的JDK新增了一個特殊的參數:-XX:MaxDirectMemorySize 默認是64M,可以改大些如128M。

       -XX:MaxDirectMemorySize=<size>
      Specifies the maximum amount of memory in bytes that the Java™ NIO library can allocate for direct memory buffers. The default is 64 megabytes, which corresponds to
      -XX:MaxDirectMemorySize=64m . The use of direct memory buffers can minimize the copying cost when doing I/O operations.

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 深夜国产成人福利在线观看| 国产稚嫩高中生呻吟激情在线视频| 久久精品国产亚洲av天海翼| 国产精品未满十八禁止观看| 亚洲日韩精品无码一区二区三区| 最新日韩精品中文字幕| 亚洲AV综合色区无码一区| 午夜福利高清在线观看| 秋霞A级毛片在线看| 性奴sm虐辱暴力视频网站| 国产精品丝袜亚洲熟女| 久亚洲一线产区二线产区三线产区| 国产中文字幕精品免费| 五月丁香综合缴情六月小说| 亚洲av日韩av综合在线观看| 日日摸夜夜添夜夜添无| 激情综合色综合啪啪开心| 天堂影院一区二区三区四区| 精品人妻av区乱码| 丁香婷婷激情俺也去俺来也| 成年女人免费碰碰视频| 中文字幕理伦午夜福利片| 99久久亚洲综合精品成人网| 精品国产黑色丝袜高跟鞋| 亚洲偷自拍国综合| 日韩人妻无码精品系列| 青青青青久久精品国产| 色窝窝免费播放视频在线| 大帝AV在线一区二区三区| 99国精品午夜福利视频不卡99| 18禁裸体动漫美女无遮挡网站| AV最新高清无码专区| 国产精品麻豆中文字幕| 高清国产MV视频在线观看| 久久超碰色中文字幕超清| 国产丰满乱子伦无码专区| 亚洲影院丰满少妇中文字幕无码| 高清破外女出血AV毛片| 无码中文人妻视频2019| 狠狠色丁香婷婷综合潮喷| 国产白嫩护士在线播放|