最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?JVM虛擬機(jī)調(diào)優(yōu)詳解

 更新時(shí)間:2022年07月19日 16:58:37   作者:惡魔的復(fù)活  
JVM是JavaVirtualMachine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的,本文主要介紹了jvm調(diào)優(yōu),感興趣的小伙伴們可以參考一下<BR>

jmap查看內(nèi)存信息

jmap histo /pid > ./log.txt :查看某一進(jìn)程實(shí)例個(gè)數(shù),占用內(nèi)存的字節(jié)數(shù),以及所屬的類

jmap -heap /pid :查看堆信息

jmap ‐dump:format=b,file=app.hprof /pid

通過jvisualvm命令啟動(dòng)jvm可視化管理界面可導(dǎo)入dump文件進(jìn)行分析:查看類的實(shí)例

jstack

分析死鎖:寫一段死鎖代碼

public class DeadLockTest {
    private final static Object lock1 = new Object();
    private final static Object lock2 = new Object();
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (lock1) {
                    try {
                        System.out.println(Thread.currentThread().getName() + ": get the lock1");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock2) {
                        System.out.println(Thread.currentThread().getName() + ": get the lock2");
                    }
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (lock2) {
                    try {
                        System.out.println(Thread.currentThread().getName() + ": get the lock2");
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock1) {
                        System.out.println(Thread.currentThread().getName() + ": get the lock1");
                    }
                }
            }
        }).start();
    }
}

"Thread-1" 線程名;prio=5 優(yōu)先級(jí)=5; tid=0x0000000019aa9000線程id; nid=0x6c4線程對應(yīng)的本地線程標(biāo)識(shí)nid; java.lang.Thread.State: BLOCKED 線程狀態(tài)

啟動(dòng) jvisualvm命令選擇對應(yīng)的進(jìn)程即可查看到死鎖的線程

Jstack分析CPU使用率高的線程堆棧信息

啟動(dòng)一個(gè)while循環(huán),使CPU一直工作

1、top -p /pid:查看進(jìn)程占用資源情況

顯而易見該進(jìn)程導(dǎo)致CPU使用率幾乎100%。

2、按H查看進(jìn)程內(nèi)每個(gè)線程占用資源的情況

3、找到CPU使用近100%的PID這列,表示線程tid為5027,通過轉(zhuǎn)換器轉(zhuǎn)為16進(jìn)制為13a3,

4、通過jstack命令執(zhí)行jstack 5026|grep -A 10 13a3,即可得到線程tid為13a3的堆棧信息,進(jìn)而找到導(dǎo)致CPU占用100%的執(zhí)行行號(hào)

jinfo查看jvm系統(tǒng)參數(shù)

jinfo -flags /pid :查看jvm參數(shù)

jinfo -sysprops /pid:查看java的系統(tǒng)參數(shù)

Jstat查看堆內(nèi)存使用和類加載的數(shù)量信息

jstat -gc /pid:垃圾回收統(tǒng)計(jì)

S0C:第一個(gè)幸存區(qū)的大小,單位KB; S1C:第二個(gè)幸存區(qū)的大?。?S0U:第一個(gè)幸存區(qū)的使用大?。籗1U:第二個(gè)幸存區(qū)的使用大??; EC:伊甸園區(qū)的大?。?EU:伊甸園區(qū)的使用大??; OC:老年代大??; OU:老年代使用大?。?MC:方法區(qū)大小(元空間) ;MU:方法區(qū)使用大??; CCSC:壓縮類空間大?。?CCSU:壓縮類空間使用大??; YGC:年輕代垃圾回收次數(shù); YGCT:年輕代垃圾回收消耗時(shí)間,單位s; FGC:老年代垃圾回收次數(shù); FGCT:老年代垃圾回收消耗時(shí)間,單位s; GCT:垃圾回收消耗總時(shí)間,單位s

jstat -gccapacity/pid: 堆內(nèi)存統(tǒng)計(jì)

NGCMN:新生代最小容量;NGCMX:新生代最大容量;NGC:當(dāng)前新生代容量;S0C:第一個(gè)幸存區(qū)大??;S1C:第二個(gè)幸存區(qū)的大??;EC:伊甸園區(qū)的大??;OGCMN:老年代最小容量;OGCMX:老年代最大容量;OGC:當(dāng)前老年代大??;OC:當(dāng)前老年代大?。籑CMN:最小元數(shù)據(jù)容量;MCMX:最大元數(shù)據(jù)容量;MC:當(dāng)前元數(shù)據(jù)空間大小;CCSMN:最小壓縮類空間大?。籆CSMX:最大壓縮類空間大?。籆CSC:當(dāng)前壓縮類空間大??;YGC:年輕代gc次數(shù);FGC:老年代GC次數(shù)

jstat -gcnew /pid:查看新生代垃圾回收統(tǒng)計(jì)

TT:對象在新生代存活的次數(shù); MTT:對象在新生代存活的最大次數(shù); DSS:期望的幸存區(qū)大小

jstat -gcnewcapacity/pid:查看新生代內(nèi)存容量

S0CMX:最大幸存1區(qū)大小;S1CMX:最大幸存2區(qū)大?。籈CMX:最大伊甸園區(qū)大小

jstat -gcold /pid:查看老年代垃圾回收統(tǒng)計(jì)

jstat -gcoldcapacity/pid:查看老年代內(nèi)存容量

jstat -gcmetacapacity/pid:查看元數(shù)據(jù)空間統(tǒng)計(jì)

通過jstat gc -pid命令可以優(yōu)化java應(yīng)用的啟動(dòng)參數(shù),jstat -gc pid 1000 10 (每隔1秒執(zhí)行1次命令,共執(zhí)行10次)預(yù)估每秒Eden區(qū)會(huì)新增多少對象,可根據(jù)具體結(jié)果調(diào)整時(shí)間。優(yōu)化思路其實(shí)簡單來說就是盡量讓每次Young GC后的存活對象小于Survivor區(qū)域的50%,都留存在年輕代里。盡量別讓對象進(jìn)入老年代。盡量減少Full GC的頻率,避免頻繁Full GC對JVM性能的影響。

內(nèi)存泄漏

對于一些老舊的數(shù)據(jù),比如jvm級(jí)別的內(nèi)存沒有及時(shí)清理,導(dǎo)致數(shù)據(jù)越堆越多,時(shí)間長了就會(huì)頻繁導(dǎo)致full gc,從而導(dǎo)致內(nèi)存泄漏。可以使用成熟緩存架構(gòu)ehcache,他們有實(shí)現(xiàn)LRU數(shù)據(jù)淘汰策略。

到此這篇關(guān)于Java JVM虛擬機(jī)調(diào)優(yōu)詳解的文章就介紹到這了,更多相關(guān)Java JVM調(diào)優(yōu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于@Value注解取不到值的幾種情況

    關(guān)于@Value注解取不到值的幾種情況

    這篇文章主要介紹了關(guān)于@Value注解取不到值的幾種情況,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • MyBatis 動(dòng)態(tài)拼接Sql字符串的問題

    MyBatis 動(dòng)態(tài)拼接Sql字符串的問題

    MyBatis的動(dòng)態(tài)SQL,解決了SQL字符串拼接的痛苦。下文分步驟給大家詳細(xì)介紹了MyBatis 動(dòng)態(tài)拼接Sql字符串的問題,非常不錯(cuò),感興趣的朋友一起看下吧
    2016-08-08
  • 詳解HTTP請求與響應(yīng)基礎(chǔ)及實(shí)例

    詳解HTTP請求與響應(yīng)基礎(chǔ)及實(shí)例

    這篇文章主要介紹了詳解HTTP請求與響應(yīng)基礎(chǔ)及實(shí)例的相關(guān)資料,這里對http的請求和響應(yīng)進(jìn)行詳細(xì)分析并附有實(shí)現(xiàn)實(shí)例,需要的朋友可以參考下
    2017-07-07
  • java 數(shù)據(jù)結(jié)構(gòu)之堆排序(HeapSort)詳解及實(shí)例

    java 數(shù)據(jù)結(jié)構(gòu)之堆排序(HeapSort)詳解及實(shí)例

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)之堆排序(HeapSort)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • java理論基礎(chǔ)Stream元素的匹配與查找

    java理論基礎(chǔ)Stream元素的匹配與查找

    這篇文章主要為大家介紹了java理論基礎(chǔ)Stream元素的匹配與查找方法的示例說明解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • mybatis-sqlserver批量新增返回id方式

    mybatis-sqlserver批量新增返回id方式

    這篇文章主要介紹了mybatis-sqlserver批量新增返回id方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java 方法引用與ambda表達(dá)式的聯(lián)系

    Java 方法引用與ambda表達(dá)式的聯(lián)系

    這篇文章主要介紹了Java 方法引用與ambda表達(dá)式的聯(lián)系,方法引用通過方法的名字來指向一個(gè)方法, 方法引用同樣是Java 8 引入的新特性,而且和Lambda表達(dá)式有著不小的聯(lián)系,它同樣可以根據(jù)上下文進(jìn)行推導(dǎo),進(jìn)而可以簡化代碼
    2022-06-06
  • java11新特性之集合轉(zhuǎn)換為數(shù)組的方法

    java11新特性之集合轉(zhuǎn)換為數(shù)組的方法

    Java11引入了一種將帶有泛型的集合轉(zhuǎn)換為帶有泛型的數(shù)組的簡單方法,本文通過實(shí)例代碼介紹java11新特性之集合轉(zhuǎn)換為數(shù)組的操作方法,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • SpringBoot中web模版數(shù)據(jù)渲染展示的案例詳解

    SpringBoot中web模版數(shù)據(jù)渲染展示的案例詳解

    憑借 Spring Framework 的模塊、與你最喜歡的工具的大量集成以及插入你自己的功能的能力,Thymeleaf 是現(xiàn)代 HTML5 JVM Web 開發(fā)的理想選擇——盡管它還有更多功能,本文重點(diǎn)給大家介紹SpringBoot中web模版數(shù)據(jù)渲染展示,需要的朋友可以參考下
    2022-01-01
  • 使用java為pdf添加書簽的方法(pdf書簽制作)

    使用java為pdf添加書簽的方法(pdf書簽制作)

    下載一些pdf格式的電子書沒有書簽,用JAVA寫了一個(gè)小工具,將特定格式的文本解析成為書簽,然后保存到pdf格式中
    2014-02-02

最新評(píng)論

鹿邑县| 白河县| 江陵县| 峡江县| 尚义县| 嘉义县| 加查县| 武宁县| 龙陵县| 大渡口区| 泗水县| 安顺市| 安国市| 县级市| 原平市| 桑日县| 延边| 安阳县| 昭通市| 专栏| 嘉峪关市| 张掖市| 盐城市| 通山县| 龙口市| 紫金县| 德令哈市| 涟源市| 互助| 色达县| 富蕴县| 山东省| 昔阳县| 台前县| 龙岩市| 承德市| 曲阜市| 宣汉县| 绥宁县| 中山市| 巴林右旗|