小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

jvm

 liang1234_ 2019-03-30

 jvm快照參數(shù)配置

使用的JVM參數(shù)的配置信息

1.堆快照:-XX: HeapDumpOnOutOfMemoryError and -XX:HeapDumpPath=c:\m.hprof

2.錯(cuò)誤處理:-xx:OnOutOfMemoryError=c:\reset.bat

3. -Xloggc:${目錄}/managed1_gc.log  -XX: HeapDumpOnOutOfMemoryError 

3.怎樣解決內(nèi)存溢出問題

首先通過看GC日志進(jìn)行排查,gc的頻率和次數(shù)。其次可以看dump堆的快照找到問題的所在,再結(jié)合一些工具,例如jprofiler來進(jìn)行內(nèi)存的跟蹤,隨時(shí)監(jiān)視垃圾回收,線程允許的狀況。

4.JVM調(diào)優(yōu)工具有哪些?

Jconsole,jProfile,VisualVM。 堆信息查看,線程監(jiān)控,熱點(diǎn)分析。

(CPU熱點(diǎn):檢查系統(tǒng)哪些方法占用的大量CPU時(shí)間;

內(nèi)存熱點(diǎn):檢查哪些對(duì)象在系統(tǒng)中數(shù)量最大(一定時(shí)間內(nèi)存活對(duì)象和銷毀對(duì)象一起統(tǒng)計(jì)),

內(nèi)存泄露的檢查(內(nèi)存泄漏一般可以理解為系統(tǒng)資源(各方面的資源,堆、棧、線程等)在錯(cuò)誤使用的情況下,

                        導(dǎo)致使用完畢的資源無法回收(或沒有回收),從而導(dǎo)致新的資源分配請(qǐng)求無法完成,引起系統(tǒng)錯(cuò)誤。)

5.CPU使用率居高不下,腫么辦?

把那幾個(gè)命令好好了解一下。調(diào)優(yōu)的命令,好好記一下

http://blog.csdn.net/jiangguilong2000/article/details/17971247

詳細(xì)的top命令請(qǐng)參考

http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html

http://blog.csdn.net/feihong247/article/details/7874063

   jstack:打印出給定的java進(jìn)程ID,分析dump文件

   JPS:列出所有的jvm的實(shí)例

   dsta      

   首先通過TOP命令找到,所有線程對(duì)CPU占用的情況。然后通過jstack來對(duì)具體的線程進(jìn)行具體的分析。

6.JVM性能調(diào)優(yōu)

     持久代用來防止類、類的一些常量操作

     1.類和接口的全限定名

     2、字段的名稱和描述符

     3、方法和名稱和描述符

     兩個(gè)原則

     1.一個(gè)是將轉(zhuǎn)移到老年代的對(duì)象數(shù)量降到最少

     因?yàn)槔夏甏臻g上的GC處理會(huì)花費(fèi)更多的時(shí)間,減少被轉(zhuǎn)移到老年代對(duì)象的數(shù)據(jù)可以顯著地減少Full GC的頻率??梢酝ㄟ^調(diào)整新生代空間的大小。

     2、另一個(gè)是減少full GC的執(zhí)行時(shí)間

     FULL GC的執(zhí)行時(shí)間要比Minor GC要長(zhǎng)的多,因此如果full gc花費(fèi)了太多的時(shí)間的話,一些連接可能會(huì)發(fā)生超時(shí)的錯(cuò)誤。如果視圖通過減少老年代空間來減少full GC執(zhí)行的時(shí)間,可能會(huì)導(dǎo)致OutofMemoryError或者full gc執(zhí)行的次數(shù)會(huì)增加。

     是否需要進(jìn)行g(shù)c優(yōu)化

     一般情況下,如果GC執(zhí)行的時(shí)間只有0.1--0.3秒的話,就沒必要浪費(fèi)時(shí)間去進(jìn)行GC優(yōu)化,但是如果GC執(zhí)行的時(shí)間在1秒或者2秒以上的話,GC將勢(shì)在必行。

一般下面情況下就不需要進(jìn)行GC優(yōu)化了

     1.Minor GC執(zhí)行的很快(小于50ms)

     2.Minor GC執(zhí)行的并不頻繁(大概10秒一次吧)

     3.Full GC執(zhí)行的很快(小于1秒)

     4.FULL GC執(zhí)行的并不頻繁(10分鐘一次)

     3.調(diào)整GC類型/內(nèi)存空間

      選擇調(diào)整合適的GC類型和設(shè)定內(nèi)存空間,針對(duì)性的優(yōu)化

     4.分析結(jié)果

     調(diào)整了GC參數(shù)后,持續(xù)收集24小時(shí)日志,進(jìn)行結(jié)果分析。如果幸運(yùn)的話,就找到最適合系統(tǒng)的GC參數(shù),反之就需要分析日志來檢查內(nèi)存是如何來分配的。然后需要不斷的調(diào)整GC類型和內(nèi)存空間大小找到最佳的參數(shù)

     5.如何設(shè)定空間大小

     一般老年代我建議設(shè)置為500M,也就是一次fullgc后,如果老年代剩余300M的話,這就是300M(程序占用) 500(老年代最小空間) 200M(空閑內(nèi)存)

     至于新生代和老年代之間的比例呢一般設(shè)置為1比1

     代碼優(yōu)化

     1、盡量在合適的地方使用單例

     2、盡量避免隨意使用靜態(tài)變量

     例如 A類里面有一個(gè)靜態(tài)變量B,此時(shí)靜態(tài)變量B的聲明周期與類A同步,如果A不卸載的話,對(duì)象會(huì)常駐在內(nèi)存,直到程序終止

     3、盡力避免過多的創(chuàng)建java對(duì)象

     例如在循環(huán)中new 對(duì)象,因?yàn)橄到y(tǒng)不僅需要花費(fèi)時(shí)間來創(chuàng)建對(duì)象,而且還需要花費(fèi)時(shí)間來進(jìn)行垃圾回收

     4、盡量使用final修飾符

     首先final修飾符的類是不可派生的,并且java編譯器會(huì)尋找機(jī)會(huì)內(nèi)聯(lián)所有的final方法,能夠提高性能一半

     5、盡量使用局部變量

     調(diào)用方法時(shí),參數(shù)傳遞的都是臨時(shí)變量,保存在棧中,其他變量入靜態(tài)變量 實(shí)例變量都在Heap中創(chuàng)建。速度較慢

     6、慎用synchronized方法

     7、盡量使用stringbuilder和stringbuffer

     8、盡量不要使用finalize方法

     9、盡量使用基本類型代替對(duì)象

     10、單線程盡量使用hashmap、arraylist

     11、盡量合理的創(chuàng)建hashmap,避免進(jìn)行hash重構(gòu)

     12、盡量使用位移來代替A/B的操作。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多