本篇內(nèi)容主要講解“JVM內(nèi)存優(yōu)化怎么做”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“JVM內(nèi)存優(yōu)化怎么做”吧!
創(chuàng)新互聯(lián)是專業(yè)的宜良網(wǎng)站建設(shè)公司,宜良接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行宜良網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
在Eclipse上安裝MAT(MemoryAnalyzer Tool)插件,官網(wǎng)鏈接(https://wiki.eclipse.org/MemoryAnalyzer)
步驟如下:
點擊Help,Install New Soft,就出現(xiàn)了以下Install界面:然后我們點擊ADD,在彈出的框中填上Mat插件的地址:http://download.eclipse.org/mat/1.8/update-site/,確定后,
點擊Select All,點擊Next,之后就一直確定,就能安裝了。安裝之后需要重啟Eclipse.
分析命令
// -Xms8m -Xmx8m -XX:+PrintGCDetails // 打印垃圾回收信息 //-Xms8m -Xmx32m -XX:+HeapDumpOnOutOfMemoryError //生成內(nèi)存快照文件 查看錯誤信息
package com.shi.jvm; import java.util.ArrayList; import java.util.List; /** * Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main" * @author shiye * GC跟蹤: -verbose:gc -XX:+PrintGCDetails 打印GC詳細信息 -XX:+PrintGCTimeStamps 打印CG發(fā)生的時間戳 -Xloggc:log/gc.log 指定GC log的位置,以文件輸出 幫助開發(fā)人員分析問題 堆: -XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息 -XX:+TraceClassLoading 監(jiān)控類的加載 -XX:+PrintClassHistogram 按下Ctrl+Break后,打印類的信息: -Xmx –Xms 指定最大堆和最小堆 -Xmx20m -Xms5m -Xmn 設(shè)置新生代大小 -XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久區(qū))的比值 新生代:老年代=1:4,即年輕代占堆的1/5 -XX:SurvivorRatio 設(shè)置兩個Survivor區(qū)和eden的比 Survivor :eden=2:8,即一個Survivor占年輕代的1/10 -Xmx20m -Xms20m -Xmn1m -XX:+PrintGCDetails 結(jié)果: Exception in thread "main" [Full GC (Ergonomics) java.lang.OutOfMemoryError: GC overhead limit exceeded [PSYoungGen: 512K->0K(1024K)] [ParOldGen: 18595K->517K(18944K)] 19107K->517K(19968K), [Metaspace: 2625K->2625K(1056768K)], 0.0077164 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] at java.lang.Integer.toString(Unknown Source) at java.lang.String.valueOf(Unknown Source) at com.shi.jvm.OOMTest.main(OOMTest.java:58) -XX:+HeapDumpOnOutOfMemoryError OOM時導(dǎo)出堆到文件 -XX:+HeapDumpPath 導(dǎo)出OOM的路徑 -Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump XX:OnOutOfMemoryError 在OOM時,執(zhí)行一個腳本 "-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“ 當程序OOM時,在D:/a.txt中將會生成線程的dump 可以在OOM時,發(fā)送郵件,甚至是重啟程序 總結(jié):根據(jù)實際事情調(diào)整新生代和幸存代的大小 官方推薦新生代占堆的3/8 幸存代占新生代的1/10 在OOM時,記得Dump出堆,確??梢耘挪楝F(xiàn)場問題 棧: -XX:PermSize -XX:MaxPermSize 設(shè)置永久區(qū)的初始空間和最大空間 他們表示,一個系統(tǒng)可以容納多少個類型 -Xss 通常只有幾百K 決定了函數(shù)調(diào)用的深度 每個線程都有獨立的棧空間 局部變量、參數(shù) 分配在棧上 * */ public class OOMTest { public static void main(String[] args) { Listlist = new ArrayList(); int i = 0; while(true) { //public native String intern(); list.add(String.valueOf(i++).intern()); } } }
到此,相信大家對“JVM內(nèi)存優(yōu)化怎么做”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!