棧幀是棧里面存儲的基本單位
一個線程對應一個虛擬機棧
一個虛擬機棧中有很多棧幀
一個棧幀對應一個方法
棧幀里面有局部變量表 、 操作數棧 、動態(tài)鏈接 、返回地址 、一些附加地址
操作數棧在方法創(chuàng)建的時候為空 動詞就是操作棧
push 把值放到操作數棧中
load_1 從變量表中取出數據放到操作數棧
store 從操作數棧中取出數據到變量表中
一個進程對應一個JVM實例
一個進程有多個線程
一個JVM有一個運行時數據區(qū)
設置棧大小的指令
-Xss 256k
設置堆空間大小
-Xms 初始堆空間大?。ㄐ律?老年代)
-Xmx 最大堆空間大小
-XX:+PrintGCDetails 顯示堆區(qū)的數據
-NewRatio: 設置新生代與老年代的比例。默認值是2
-XX:SurvivorRatio:設置新生代Eden中eden區(qū)與Survivor區(qū)的比例
-XX:-UseAdaptiveSiePolicy :關閉自適應內存分配
※ 測試堆空間常用的JVM參數
-XX:+PrintFlagsInitial? 查看所有參數的默認值
-XX:+PrintFlagsFinal 查看所有的參數的最終值
-Xms? ? 初始堆空間內存(默認為物理內存的1/64)
-Xmx? ? 最大堆空間內存(默認為物理內存的1/4)
-Xmn 設置新生代的大?。ǔ跏贾导白畲笾担?/p>
-XX:NewRatio 配置新生代與老年代在堆結構的占比
-XX:SurvivorRatio 設置新生代中的Eden和s0/s1空間的比例
-XX:MaxTenuringThreshold 設置新生代垃圾的最大年齡
-XX:+PrintGCDetails 輸出詳細的GC處理日志
-XX:HandlePromotionFailure? 是否設置空間配置擔保
-XX:Metaspacesize=100m
-XX:MaxMetaspacesize=100m
-XX:UseG1GC 啟用G1GC
※? JDK1.8 堆存放靜態(tài)變量 字符串常量池? 對象
? ? 方法區(qū) 存放 類型信息? 域信息? 方法信息? 代碼緩存? 運行時常量池
多線程編程步驟
上部
? 第一部步 創(chuàng)建資源類,在資源類創(chuàng)建屬性和操作方法
中部
? 第二部 在資源類操作方法
? 1. 判斷
? 2. 干活
? 3. 通知
下部
? 創(chuàng)建多個線程,調用資源類的操作方法
? 第四步 防止虛假喚醒問題