本篇內(nèi)容主要講解“JVM內(nèi)存優(yōu)化怎么做”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JVM內(nèi)存優(yōu)化怎么做”吧!
創(chuàng)新互聯(lián)是專業(yè)的宜良網(wǎng)站建設公司,宜良接單;提供成都網(wǎng)站建設、網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用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
設置新生代大小
-XX:NewRatio
新生代(eden+2*s)和老年代(不包含永久區(qū))的比值
新生代:老年代=1:4,即年輕代占堆的1/5
-XX:SurvivorRatio
設置兩個Survivor區(qū)和eden的比
Survivor :eden=2:8,即一個Survivor占年輕代的1/10
-Xmx20m -Xms20m -Xmn1m -XX:+PrintGCDetails
結果:
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時導出堆到文件
-XX:+HeapDumpPath
導出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ā)送郵件,甚至是重啟程序
總結:根據(jù)實際事情調(diào)整新生代和幸存代的大小
官方推薦新生代占堆的3/8
幸存代占新生代的1/10
在OOM時,記得Dump出堆,確保可以排查現(xiàn)場問題
棧:
-XX:PermSize -XX:MaxPermSize
設置永久區(qū)的初始空間和最大空間
他們表示,一個系統(tǒng)可以容納多少個類型
-Xss
通常只有幾百K
決定了函數(shù)調(diào)用的深度
每個線程都有獨立的棧空間
局部變量、參數(shù) 分配在棧上
*
*/
public class OOMTest {
public static void main(String[] args) {
List<String> list = 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)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
網(wǎng)頁名稱:JVM內(nèi)存優(yōu)化怎么做
網(wǎng)站網(wǎng)址:http://chinadenli.net/article0/goiiio.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、品牌網(wǎng)站制作、建站公司、網(wǎng)站內(nèi)鏈、定制開發(fā)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)