【面試題】關於JVM內存配置參數你瞭解多少?

【面試題】關於JVM內存配置參數你瞭解多少?

又要到了金三銀四跳槽季了,今天給大家準備一個面試題。祝你新年跳槽加薪翻倍,2019年豬年發大財!

題目

對於JVM內存配置參數:

-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3

,其最小內存值和Survivor區總大小分別是()

A 5120m,1024m

B 5120m,2048m

C 10240m,1024m

D 10240m,2048m

答案解析

正確答案是:D

-Xmx:最大堆大小

-Xms:初始堆大小

-Xmn: 年輕代大小

-XXSurvivorRatio=3:代表Eden:Survivor = 3

根據Generation-Collection算法(目前大部分JVM採用的算法),一般根據對象的生存週期將堆內存分為若干不同的區域,一般情況將新生代分為Eden ,兩塊Survivor;

計算Survivor大小, Eden:Survivor = 3,總大小為5120,3x+x+x=5120 x=1024(Survivor區有兩個,即將年輕代分為5份,每個Survivor區佔一份),總大小為2048m。

新生代大部分要回收,採用Copying算法,快!

老年代 大部分不需要回收,採用Mark-Compact算法

-Xms初始堆大小即最小內存值為10240m

所以正確答案是 D 10240m,2048m


【面試題】關於JVM內存配置參數你瞭解多少?



常見配置彙總

堆設置

-Xms:初始堆大小

-Xmx:最大堆大小

-XX:NewSize=n:設置年輕代大小

-XX:NewRatio=n:設置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代佔整個年輕代年老代和的1/4

-XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區佔整個年輕代的1/5

-XX:MaxPermSize=n:設置持久代大小

收集器設置

-XX:+UseSerialGC:設置串行收集器

-XX:+UseParallelGC:設置並行收集器

-XX:+UseParalledlOldGC:設置並行年老代收集器

-XX:+UseConcMarkSweepGC:設置併發收集器

垃圾回收統計信息

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:filename

並行收集器設置

-XX:ParallelGCThreads=n:設置並行收集器收集時使用的CPU數。並行收集線程數。

-XX:MaxGCPauseMillis=n:設置並行收集最大暫停時間

-XX:GCTimeRatio=n:設置垃圾回收時間佔程序運行時間的百分比。公式為1/(1+n)

併發收集器設置

-XX:+CMSIncrementalMode:設置為增量模式。適用於單CPU情況。

-XX:ParallelGCThreads=n:設置併發收集器年輕代收集方式為並行收集時,使用的CPU數。並行收集線程數。

【面試題】關於JVM內存配置參數你瞭解多少?

知識補充:JVM內存區域總體分兩類,heap區 和 非heap 區 。

heap區: Eden Space(伊甸園)、Survivor Space(倖存者區)、Tenured Gen(老年代-養老區)。

非heap區: Code Cache(代碼緩存區)、Perm Gen(永久代)、Jvm Stack(java虛擬機棧)、Local Method Statck(本地方法棧)。

最後小編為了大家跳槽加薪成功,特地給大家準備了些跳槽面試的資料。轉發+關注。私下我“資料”即可獲取。


分享到:


相關文章: