色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

JVM進階知識(一):初識 JAVA 棧

深入淺出 JVM ? 來源:深入淺出 JVM ? 作者:深入淺出 JVM ? 2022-03-01 14:02 ? 次閱讀

一、前言

若想自己編寫的Java程序高效運行,以及進行正確、高效的異常診斷,JVM是不得不談的一個話題。本”JVM進階“專欄大部分內容均來源于經典書籍《深入理解Java虛擬機》。

二、棧存儲

言歸正傳,本文重點從虛擬機內存模型(運行時數據區域)入手。先看下圖:

這里寫圖片描述

這是一張比較官方的虛擬機模型圖,今天講的就是虛線框中棧的部分。

棧是我們最常用的內存區域。它主要用來存放基本類型變量,局部變量以及對象的引用。例如:User user = new User();這里的user就是對象的引用也可以理解為地址,指引著虛擬機要去哪里找user這個對象。 他們的基本關系如圖:

這里寫圖片描述

由上圖可知,當我們將一個對象作為方法的參數時,我們在方法中改變對象的值,也會影響到原來對象的值,因為我們只是改變了圖中內存區域的值,他的指引(地址)還是一樣的。同時也可以看出,棧的內存區域是連續的,有大小限制的,如果超過了就會拋出棧溢出的異常StackOverflowError。

在每個方法執行的時候,都會創建一個個的棧幀,用于保存局部變量表,操作數棧,動態鏈接等信息(以后都會詳細講解)。每次方法的調用都會對應著一個棧幀,因此可以解釋當我們在寫遞歸程序的時候會不小心報棧溢出的異常,因為棧是有限的,方法調用太多次導致棧幀堆滿了棧,所以溢出。看下面代碼:

public class Test {
private static int stackLength = 0;
private static void main(String[] args) {
 try {
  Test test = new Test();
  test.stackOverFlow();
 } catch (Throwable e) {
  System.out.println("stackLength:" + stackLength);
  throw e;
 }
}
public void stackOverFlow() {
 // 瘋狂遞歸調用
 stackLength++;
 stackOverFlow();
}
}


在參數-Xss128k的情況下的報錯。(eclipse中設置參數:右鍵代碼選擇Run As-->Run Configurations,在Arguments欄下的VM arguments中填入參數,再Apply,再run)

這里寫圖片描述

每次在方法執行完畢的時候,虛擬機會自動釋放掉為該棧所分配的空間,在棧中,對應著一個棧幀的出棧。虛擬機會自動分配與回收內存,因此效率比較高。

三、總結

最后做一下棧的總結:

存放基本類型變量,局部變量,對象的引用;
系統自動分配與回收內存,效率較高,快速,存取速度比堆要快;
是一塊連續的內存的區域,有大小限制,如果超過了就會棧溢出,并拋出棧溢出的異常StackOverflowError;
Java會自動釋放掉為該變量所分配的內存空間;
棧又分為java棧和本地方法棧。顧名思義,本地方法棧自然就是為本地方法提供服務的,java棧是為java服務的。

注意??:JVM棧是每個線程私有的!

四、拓展閱讀

《JVM虛擬機專欄》

審核編輯:符乾江

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2974

    瀏覽量

    105089
  • 虛擬機
    +關注

    關注

    1

    文章

    931

    瀏覽量

    28406
收藏 人收藏

    評論

    相關推薦

    SSM框架在Java開發中的應用 如何使用SSM進行web開發

    。以下是對SSM框架在Java開發中的應用,以及如何使用SSM進行web開發的介紹: SSM框架的組件及其作用 Spring :Spring是個開源的Java/Java EE全功能
    的頭像 發表于 12-16 17:28 ?638次閱讀

    Java 23功能介紹

    Java 23 包含全新和更新的 Java 語言功能、核心 API 以及 JVM,同時適合新的 Java 開發者和高級開發者。從?IntelliJ IDEA 2024.2?開始已支持
    的頭像 發表于 12-04 10:02 ?345次閱讀
    <b class='flag-5'>Java</b> 23功能介紹

    java知識-納秒

    作者:京東物流 崔冬冬 、System.nanoTime() java中,有這么個方法 System.nanoTime() ,你用過嗎? 二、與System.currentTimeMillis
    的頭像 發表于 11-26 11:11 ?212次閱讀

    Java中時間戳的使用

    Java中時間戳的使用
    的頭像 發表于 11-06 16:04 ?265次閱讀
    <b class='flag-5'>Java</b>中時間戳的使用

    Linux網絡協議的實現

    網絡協議是操作系統核心的個重要組成部分,負責管理網絡通信中的數據包處理。在 Linux 操作系統中,網絡協議(Network Stack)負責實現 TCP/IP 協議簇,處理應用程序發起的網絡
    的頭像 發表于 09-10 09:51 ?364次閱讀
    Linux網絡協議<b class='flag-5'>棧</b>的實現

    ?介紹Java開發的開源MES系統

    ?介紹Java開發的開源MES系統,萬界星空科技開源的MES系統。該系統基于Java開發,具有廣泛的適用性和高度的可定制性,能夠滿足不同行業、不同規模企業的智能制造需求。
    的頭像 發表于 09-05 17:39 ?742次閱讀
    ?介紹<b class='flag-5'>一</b>款<b class='flag-5'>Java</b>開發的開源MES系統

    java反編譯能拿到源碼嗎

    Java反編譯是種將編譯后的Java字節碼(.class文件)轉換回Java源代碼的過程。雖然反編譯可以幫助理解代碼的邏輯和結構,但它并不總是能完美地還原原始源代碼。反編譯工具通常會
    的頭像 發表于 09-02 11:03 ?1179次閱讀

    從原理聊JVM):染色標記和垃圾回收算法

    導讀 JAVA簡單易用的特性,能夠讓研發人員在不了解JVM的底層運行機制的情況下依舊能夠編寫出功能完善的代碼。 但是對JVM的理解,是個程序員普通和優秀的分水嶺。全面地了解
    的頭像 發表于 08-20 15:25 ?280次閱讀
    從原理聊<b class='flag-5'>JVM</b>(<b class='flag-5'>一</b>):染色標記和垃圾回收算法

    聊聊JVM如何優化

    進行優化。 1.JVM內存模型 針對JAVA8的模型進行討論,JVM的內存模型主要分為幾個關鍵區域:堆、方法區、程序計數器、虛擬機和本地方法
    的頭像 發表于 08-05 17:49 ?520次閱讀
    聊聊<b class='flag-5'>JVM</b>如何優化

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: – Java
    的頭像 發表于 07-16 13:35 ?890次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別

    初識IO-Link及IO-Link設備軟件協議

    亞信IO-Link設備軟件協議是基于亞信電子AXM-IOLS IO-Link設備評估板設計的,搭載意法半導體 STM32F469AI微控制器,并在STM32CubeIDE開發環境中進行開發。此
    的頭像 發表于 07-08 13:55 ?2938次閱讀
    <b class='flag-5'>初識</b>IO-Link及IO-Link設備軟件協議<b class='flag-5'>棧</b>

    探索虛擬線程:原理與實現

    的開銷。首先,創建成本不菲,因為每當操作系統需要創建個新的平臺線程時,它必須分配大量的內存(通常以兆字節計)來存儲線程的上下文信息、本機Java調用。這
    的頭像 發表于 06-24 11:35 ?351次閱讀
    探索虛擬線程:原理與實現

    已經安裝了Java,且依然提示安裝Java是為什么?

    我已經在機器上安裝了最新版的 Java 10,打開 Cube 卻得到要求安裝 Java 1.7.0_45 的提示。何解?Eclipse CDT 依賴 Java,不可卸載重裝。
    發表于 04-26 06:23

    深入理解Java 8內存管理機制及故障排查實戰指南

    Java的自動內存管理機制是由 JVM 中的垃圾收集器來實現的,垃圾收集器會定期掃描堆內存中的對象,檢測并清除不再使用的對象,以釋放內存資源。
    的頭像 發表于 04-04 08:10 ?1054次閱讀
    深入理解<b class='flag-5'>Java</b> 8內存管理機制及故障排查實戰指南

    RK3568驅動指南|驅動基礎進階篇-進階5 自定義實現insmod命令實驗

    RK3568驅動指南|驅動基礎進階篇-進階5 自定義實現insmod命令實驗
    的頭像 發表于 02-20 14:10 ?777次閱讀
    RK3568驅動指南|驅動基礎<b class='flag-5'>進階</b>篇-<b class='flag-5'>進階</b>5 自定義實現insmod命令實驗
    主站蜘蛛池模板: 99热最新网站 | 国产一区日韩二区欧美三区 | yellow免费观看完整版直播 | 久久久久久久99精品免费观看 | 久久综合色一综合色88 | 九九大香尹人视频免费 | 国产精品亚洲国产三区 | 亚洲高清视频免费 | 伦理片秋霞免费影院 | 国产亚洲精品成人AV久久 | jizz69女士第一次 | 中文字幕在线不卡精品视频99 | 久久久久青草大香线综合精品 | 中文字幕在线观看国产 | 久久这里只精品热在线99 | 掀开奶罩边躁狠狠躁软学生 | 9久爱午夜视频 | 亚洲国产综合久久精品 | 97久久久久 | 亚洲 欧美 中文 日韩 视频 | 天龙八部慕容属性加点 | 亚洲 色 欧美 爱 视频 日韩 | 国产互换后人妻的疯狂VIDEO | 国产国语在线播放视频 | 久久久精品久久久久久 | 99久热这里精品免费 | 跳蛋按摩棒玉势PLAY高H | 国产中文字幕乱码免费 | 小SAO货叫大声点妓女 | 国产午夜精品理论片 | 草莓视频在线免费观看 | 久久足恋网 | 91久久线看在观草草青青 | 在线看片福利无码网址 | 久久成人免费大片 | 男女免费观看在线爽爽爽视频 | 荡乳乱公小说 | 思思99热久久精品在线6 | 色欲国产麻豆一精品一AV一免费 | 啪啪羞羞GIF男女0OXX动态图 | 亚洲精品免费观看 |