大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業指南 比較經典的一些jvm調優策略面試題

比較經典的一些jvm調優策略面試題

更新時間:2023-01-30 15:05:54 來源:動力節點 瀏覽2203次

JVM性能調優是一個很大的話題,很多中小企業的業務規模受限,沒有迫切的性能調優需求,但是如果不知道JVM相關的理論知識,寫出來的代碼或者配置的JVM參數不合理時,就會出現很嚴重的性能問題,到時候開發就會像熱鍋上的螞蟻,等待各方的炙烤。今天小編總結了一些相關的面試題,一是希望能夠應對性能調優崗位相關的面試;二是希望總結一下具體的實戰步驟,并努力吸收書中的實踐案例,讓自己的經驗更豐富一些。

jvm調優策略面試題

JVM性能調優

內存溢出錯誤

學習目的:

通過異常信息及時定位到發生內存溢出的運行時數據區域

了解什么樣的代碼會導致內存溢出,防止寫出這樣的代碼

出現異常后該如何處理,也就是學習事中的處理手段

內存溢出和內存泄露的區別

內存泄露:不該留存在進程中的內存數據,雖然很小,但是在經過多次長期的積累后,會導致內存溢出

內存溢出:程序申請內存時,內存不足的現象

堆溢出錯誤和預判堆溢出的錯誤

如何復現出堆溢出錯誤?

JVM參數部分:最大堆和最小堆設置相同并且設置的比較小,比如只有10M,這樣就不會自動擴展堆

代碼部分:在一個方法中不斷地往集合中加入元素

代碼實踐

package org.example;

import java.util.ArrayList;
import java.util.List;

/**
 * -Xmx10M -Xms10M -XX:+HeapDumpOnOutOfMemoryError
 */
public class App {
    static class OOMObject {
        int a = 1;
        long b = 2;
        float c = 2.1f;
    }

    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<>();
        while (true) {
            list.add(new OOMObject());
        }
    }
}

正確的出現了我們想要的結果:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid24476.hprof ...
Heap dump file created [13268403 bytes in 0.077 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3210)
	at java.util.Arrays.copyOf(Arrays.java:3181)
	at java.util.ArrayList.grow(ArrayList.java:265)
	at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:239)
	at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:231)
	at java.util.ArrayList.add(ArrayList.java:462)
	at org.example.App.main(App.java:22)

Process finished with exit code 1

如果把參數調大,調整20M,那么會報另外的error

java.lang.OutOfMemoryError: GC overhead limit exceeded
Dumping heap to java_pid8796.hprof ...
Heap dump file created [27391983 bytes in 0.141 secs]
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
	at org.example.App.main(App.java:19)

Process finished with exit code 1

這個錯誤的原因是,JVMGC時間占據了整個運行時間的98%,但是回收只得到了2%可用的內存,至少出現5次,就會報這個異常。

這個異常是Jdk1.6定義的策略, 通過統計GC時間來預測是否要OOM了,提前拋出異常,防止OOM發生。

案例心得:

  • 堆內存溢出的識別:java.lang.OutOfMemoryError: Java heap space 或者 java.lang.OutOfMemoryError: GC overhead limit exceeded
  • 死循環中不斷創建對象這種代碼應該規避
  • 提前設置好自動轉儲的參數,出現異常能夠恢復現場查看問題
  • 事后排查思路:先用JvisualVM這樣的軟件查看具體對象,核查是內存溢出還是內存泄漏,如果確定沒有泄露,需要排查堆的參數設置是否合理,從代碼上分析對象存活時長比較長是否必要,是否可以優化等等。

虛擬機棧和本地方法棧溢出錯誤

一般我們會遇到兩種棧相關的錯誤:

單個線程中,不斷的調用方法入棧,當棧深度超過虛擬機所允許的最大深度時,拋出StackOverflowError

不斷地創建線程,創建線程就需要創建棧,當無法申請到足夠的內存,就會報 unable to create new native thread錯誤

如何復現?

JVM參數:-Xss128k,每個線程的棧內存大小

代碼部分:沒有出口的遞歸調用

代碼實踐

/**
 * -Xss128k
 */
public class App {
    static int length = 0;

    private static void reverse() {
        length++;
        reverse();
    }

    public static void main(String[] args) {
        try {
            reverse();
        } catch (Throwable e) {
            System.out.println("length:" + length);
            throw e;
        }
    }
}

 結果驗證:

length:1096
Exception in thread "main" java.lang.StackOverflowError
	at org.example.App.reverse(App.java:10)
	at org.example.App.reverse(App.java:11)
	at org.example.App.reverse(App.java:11)
	at org.example.App.reverse(App.java:11)
    太多了,這里只截取部分

關于unable to create new native thread這個異常,這里就不嘗試了,因為可能會導致操作系統假死等問題。

案例心得:

  • 棧錯誤的識別:StackOverflowError 或者 java.lang.OutOfMemoryError: unable to create new native thread
  • 沒有出口的遞歸調用要避免;默認的JVM棧大小的參數針對一般的方法調用深度是足夠的
  • 如果必須要創建大量的常駐線程,并且是32位的虛擬機,要測試協調好 棧內存和其他內存的大小,防止出現溢出錯誤
  • 事后排查思路:先確定是哪種錯誤,然后檢查遞歸調用或者檢查線程數

以上就是“比較經典的一些jvm調優策略面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 天天色综合色 | 黄wwwwww| 亚洲综合狠狠99婷婷 | 狠狠久久久久久亚洲综合网 | 毛片网站在线 | 欧美三级欧美成人高清www | 免费骚视频 | 午夜性爽视频男人的天堂在线 | 日韩亚洲欧美在线观看 | 国产伦理一区 | 26uuu欧美视频在线观看 | 亚洲高清中文字幕一区二区三区 | 国产91嫩草精品 | 亚洲免费不卡 | 久夜色精品国产一区二区三区 | 九九九九九九伊人 | 狠狠插天天干 | 伊人久久免费视频 | 国产综合在线播放 | 日本一区中文字幕 | 99久久免费国产精品m9 | 亚洲人成网站色7799在线观看 | 国产成人高清亚洲一区久久 | 久久国产精品-久久精品 | 国产理论最新国产精品视频 | 天天操天天干天天舔 | 又黑又粗又硬欧美视频在线观看 | 99国产精品久久久久久久成人热 | 日韩毛片在线 | 小明看看成人免费 | 欧美成人性视频在线黑白配 | 97看看| 欧美日韩国产成人综合在线影院 | 久久国产亚洲精品 | 特级黄一级播放 | 色网站在线 | 亚洲精品久久麻豆蜜桃 | 91中文字幕在线观看 | 成人免费视频在线 | 不卡国产| 欧美日韩国产精品 |