深入淺出 JVM (7) 棧上分配

2021-09-25 06:57:53 字數 1286 閱讀 4410

迴圈建立1000000000乙個物件,阻止棧上分配

棧上分配條件:開啟逃逸分析 & 開啟標量替換

jvm 引數:

-server -xmx10m -xms10m -xx:-doescapeanalysis -xx: printgc

使用 server 模式棄用逃逸分析(-server -xx:-doescapeanalysis),設定堆空間大小10m,初始空間10m,列印 gc 日誌

-server -xmx10m -xms10m -xx: printgc -xx:-eliminateallocations

以上二選一

**:/**

* @version 1.0

* @author: mousycoder

* @date: 2019-06-11 16:55

*/public class onstacktest

public static void alloc()

public static void main(string args)

long e = system.currenttimemillis();

system.out.println(e-b);

}} 輸出:

分析:本次發生的是 minor gc,發生 gc 的原因是堆空間沒有合適的區域能夠存放資料結構導致的,堆從7651k **到 5603k,

作 者 : @mousycoder

原文出處 :

深入淺出 JVM (8) TLAB

tlab thread local allocation buffer 執行緒本地分配緩衝區 執行緒私有分配區,私有分配,公共檢視 占用 eden 區 預設 eden 的1 預設開啟,jvm 會為每乙個執行緒分配一塊 tlab 區域,避免堆物件共享造成的多執行緒執行緒同步。優化多執行緒堆空間分配物件...

深入淺出 JVM (8) TLAB

tlab thread local allocation buffer 執行緒本地分配緩衝區 執行緒私有分配區,私有分配,公共檢視 占用 eden 區 預設 eden 的1 預設開啟,jvm 會為每乙個執行緒分配一塊 tlab 區域,避免堆物件共享造成的多執行緒執行緒同步。優化多執行緒堆空間分配物件...

深入淺出 JVM (3) 浮點數

1 10000001 01000000000000000000000 1 10000001 101000000000000000000000 如果指數字不全為 0 則尾數字首位 1 如果指數字全為 0,則尾數字首位 0 十進位制 1 2 129 127 1 2 0 1 2 2 1 4 1.25 5 ...