亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java內(nèi)存模型中的虛擬機(jī)棧原理分析

 更新時間:2019年11月07日 10:16:18   作者:Demrystv  
這篇文章主要介紹了Java內(nèi)存模型中的虛擬機(jī)棧原理分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

  Java虛擬機(jī)在執(zhí)行Java程序的過程中會把它所管理的內(nèi)存劃分為若干個不同的數(shù)據(jù)區(qū)域,這些區(qū)域都會有各自的用途,以及創(chuàng)建和銷毀的時間,有的區(qū)域會隨著虛擬機(jī)進(jìn)程的啟動而存在,有些區(qū)域則依賴用戶線程的啟動和結(jié)束而建立和銷毀。Java虛擬機(jī)所管理的內(nèi)存將會包括以下幾個運(yùn)行時數(shù)據(jù)區(qū)域。如下圖所示(圖片來自《深入理解Java虛擬機(jī)》一書)。

  在內(nèi)存中,棧分為兩部分,一部分是本地方法棧,為虛擬機(jī)使用到的Native方法服務(wù),具體的虛擬機(jī)可以自由實(shí)現(xiàn),另一部分就是虛擬機(jī)棧,主要是為虛擬機(jī)執(zhí)行Java方法服務(wù),因此也成為Java棧,本文主要是對虛擬機(jī)棧進(jìn)行詳細(xì)解讀。

  1. Java棧也稱為虛擬機(jī)棧,也就是我們常常所說的棧。 Java棧是Java方法執(zhí)行的內(nèi)存模型。

  2. Java棧中存放的是一個個的棧幀,每個棧幀對應(yīng)一個被調(diào)用的方法,在棧幀中包括局部變量表(Local Variables)、操作數(shù)棧(Operand Stack)、指向當(dāng)前方法所屬的類的運(yùn)行時常量池(運(yùn)行時常量池的概念在方法區(qū)部分會談到)的引用(Reference to runtime constant pool)、方法返回地址(Return Address)和一些額外的附加信息。 當(dāng)線程執(zhí)行一個方法時,就會隨之創(chuàng)建一個對應(yīng)的棧幀,并將建立的棧幀壓棧。當(dāng)方法執(zhí)行完畢之后,便會將棧幀出棧。 因此對于方法沒有存在回收資源一說 。

  3. 局部變量表,顧名思義,想必不用解釋大家應(yīng)該明白它的作用了吧。就是用來存儲方法中的局部變量(包括在方法中聲明的非靜態(tài)變量以及函數(shù)形參)。對于基本數(shù)據(jù)類型的變量,則直接存儲它的值,對于引用類型的變量,則存的是指向?qū)ο蟮囊?。局部變量表的大小在編譯器就可以確定其大小了,因此在程序執(zhí)行期間局部變量表的大小是不會改變的。

  4. 操作數(shù)棧,想必學(xué)過數(shù)據(jù)結(jié)構(gòu)中的棧的朋友想必對表達(dá)式求值問題不會陌生,棧最典型的一個應(yīng)用就是用來對表達(dá)式求值。想想一個線程執(zhí)行方法的過程中,實(shí)際上就是不斷執(zhí)行語句的過程,而歸根到底就是進(jìn)行計算的過程。因此可以這么說,程序中的所有計算過程都是在借助于操作數(shù) 。

  5. 指向運(yùn)行時常量池的引用,因為在方法執(zhí)行的過程中有可能需要用到類中的常量,所以必須要有一個引用指向運(yùn)行時常量。

  6. 方法返回地址,當(dāng)一個方法執(zhí)行完畢之后,要返回之前調(diào)用它的地方,因此在棧幀中必須保存一個方法返回地址。

  7. 由于每個線程正在執(zhí)行的方法可能不同,因此每個線程都會有一個自己的Java棧,互不干擾。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JDK與JRE的下載和安裝以及配置JDK環(huán)境變量圖文教程

    JDK與JRE的下載和安裝以及配置JDK環(huán)境變量圖文教程

    JRE也就是(Java?RuntimeEnvironment)Java運(yùn)行環(huán)境,是運(yùn)行JAVA程序所必須的環(huán)境的集合,包含各種類庫,下面這篇文章主要給大家介紹了關(guān)于JDK與JRE的下載和安裝以及配置JDK環(huán)境變量的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 深入解析堆排序的算法思想及Java代碼的實(shí)現(xiàn)演示

    深入解析堆排序的算法思想及Java代碼的實(shí)現(xiàn)演示

    堆排序基于二叉堆結(jié)構(gòu)即完全二叉樹,可利用最大堆和最小堆的組建方式來進(jìn)行排序,這里就來深入解析堆排序的算法思想及Java代碼的實(shí)現(xiàn)演示
    2016-06-06
  • Spring深入刨析聲明式事務(wù)注解的源碼

    Spring深入刨析聲明式事務(wù)注解的源碼

    在spring注解中,使用聲明式事務(wù),需要用到兩個核心的注解:@Transactional注解和@EnableTransactionManagement注解。將@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置類上
    2022-07-07
  • Java C++題解leetcode1620網(wǎng)絡(luò)信號最好的坐標(biāo)

    Java C++題解leetcode1620網(wǎng)絡(luò)信號最好的坐標(biāo)

    這篇文章主要為大家介紹了Java C++題解leetcode1620網(wǎng)絡(luò)信號最好的坐標(biāo)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • java實(shí)現(xiàn)猜數(shù)字游戲

    java實(shí)現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Spring中@Conditional注解用法詳解

    Spring中@Conditional注解用法詳解

    這篇文章主要介紹了Spring中@Conditional注解用法詳解,@Conditional是Spring4版本新提供的一種注解,它的作用是按照設(shè)定的條件進(jìn)行判斷,把滿足判斷條件的bean注冊到Spring容器,需要的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解

    Java實(shí)現(xiàn)解析JSON大文件JsonReader工具詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)解析JSON大文件的工具JsonReader使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Spring4.0 MVC請求json數(shù)據(jù)報406錯誤的解決方法

    Spring4.0 MVC請求json數(shù)據(jù)報406錯誤的解決方法

    這篇文章主要為大家詳細(xì)介紹了Spring4.0 MVC請求json數(shù)據(jù)報406錯誤的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • springboot日志切面通用類實(shí)例詳解

    springboot日志切面通用類實(shí)例詳解

    這篇文章主要介紹了springboot日志切面通用類,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Java設(shè)計模式初識之備忘錄模式詳解

    Java設(shè)計模式初識之備忘錄模式詳解

    備忘錄設(shè)計模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于實(shí)現(xiàn)防丟失、撤銷、恢復(fù)等功能。本文將通過示例為大家介紹一些備忘錄模式的定義與使用,需要的可以參考一下
    2022-11-11

最新評論