<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
當前執行緒所執行的位元組碼的行號指示器,分支、迴圈、跳轉、例外處理、執行緒恢復等基礎功能都要考程式計數器。(記住程式當前走到的位置,下次還回來)。執行緒私有。
和方法相關聯,每個方法在執行的同時都會建立一個棧幀用於儲存區域性變數表、運算元棧、動態連結、方法出口等資訊。每一個方法從呼叫直至執行完成的過程,就對應著一個棧幀在虛擬機器器棧中入棧到出棧的過程
執行緒請求的棧深度大於虛擬機器器所允許的深度,將丟擲StackOverflowError異常(常見的遞迴層數過多導致”爆棧“)
類似於Java虛擬機器器棧。區別在於:
虛擬機器器棧為虛擬機器器執行Java方法本地方法棧則為虛擬機器器使用到的Native方法服務
Java開頭通過Java Native Interface來呼叫本地方法(一般用C語言編寫)
Java虛擬機器器所管理的記憶體中最大的一塊new出來的物件就存在於堆上垃圾收集器管理的主要區域
儲存已被虛擬機器器載入的類資訊、常數、靜態變數
方法區的一部分用於存放編譯期生成的各種字面量和符號參照
Object obj=new Object()
: 分析這行程式碼的執行過程
使用了new關鍵字,檢查這個指令的引數是否能在常數池中定位到一個類的符號參照,並且檢查這個符號參照代表的類是否已被載入、解析和初始化過。沒有的話先載入類類載入檢查通過後,虛擬機器器將為新生物件分配記憶體記憶體分配完成後,虛擬機器器需要將分配到的記憶體空間都初始化為零值虛擬機器器要對物件進行必要的設定,例如將物件的雜湊碼、後設資料、GC分代年齡、是否使用偏向鎖等資料存放在物件頭中執行init方法,把物件按照程式設計師的意願進行初始化(給成員變數賦的值)
Java堆中將會劃分出一塊記憶體來作為控制程式碼池,reference中儲存的就是物件的控制程式碼地址,而控制程式碼中包含了物件範例資料與型別資料各自的具體地址資訊
Java堆物件的佈局中就必須考慮如何放置存取型別資料的相關資訊,而reference中儲存的直接就是物件地址
二者比較:
使用控制程式碼來存取的最大好處就是reference中儲存的是穩定的控制程式碼地址,即使物件被移動(GC過程),只需要改變控制程式碼中的範例指標,無需變動refrence直接指標存取方式的最大好處就是速度更快, refrence直接指向範例資料,減少了一次指標存取
HotSpot虛擬機器器使用直接指標方式進行物件存取的
package jvm; import java.util.ArrayList; import java.util.List; public class OutOfMemoryErrorDemo { static class MyObject{ } public static void main(String[] args) { List<MyObject> list=new ArrayList<>(); int i=0; while(true) { System.out.println(i++); list.add(new MyObject()); } } }
限制Java堆的大小為20MB,不可延伸(將堆的最小值-Xms引數與最大值-Xmx引數設定為一樣即可避免堆自動擴充套件),通過引數-XX:+HeapDumpOnOutOfMemoryError
可以讓虛擬機器器在出現記憶體溢位異常時Dump出當前的記憶體堆轉儲快照以便事後進行分析
如果執行緒請求的棧深度大於虛擬機器器所允許的最大深度,將丟擲StackOverflowError異常
package jvm; import java.util.ArrayList; import java.util.List; public class OutOfMemoryErrorDemo { static int i=0; public static void main(String[] args) { f(); } public static void f() { System.out.println(i++); f(); } }
相同的Xss(執行緒的堆疊大小)下,如果棧中的本地資料較多,那麼相應的可以遞迴的次數就越少
還有1種棧溢位會報OutOfMemoryError異常,如果虛擬機器器在擴充套件棧時無法申請到足夠的記憶體空間,則丟擲OutOfMemoryError異常,比如將上面的遞迴改成多執行緒版就會出現這種問題
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45