在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JVM進(jìn)階知識(shí)(一):初識(shí) JAVA 棧

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

一、前言

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

二、棧存儲(chǔ)

言歸正傳,本文重點(diǎn)從虛擬機(jī)內(nèi)存模型(運(yùn)行時(shí)數(shù)據(jù)區(qū)域)入手。先看下圖:

這里寫圖片描述

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

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

這里寫圖片描述

由上圖可知,當(dāng)我們將一個(gè)對象作為方法的參數(shù)時(shí),我們在方法中改變對象的值,也會(huì)影響到原來對象的值,因?yàn)槲覀冎皇歉淖兞藞D中內(nèi)存區(qū)域的值,他的指引(地址)還是一樣的。同時(shí)也可以看出,棧的內(nèi)存區(qū)域是連續(xù)的,有大小限制的,如果超過了就會(huì)拋出棧溢出的異常StackOverflowError。

在每個(gè)方法執(zhí)行的時(shí)候,都會(huì)創(chuàng)建一個(gè)個(gè)的棧幀,用于保存局部變量表,操作數(shù)棧,動(dòng)態(tài)鏈接等信息(以后都會(huì)詳細(xì)講解)。每次方法的調(diào)用都會(huì)對應(yīng)著一個(gè)棧幀,因此可以解釋當(dāng)我們在寫遞歸程序的時(shí)候會(huì)不小心報(bào)棧溢出的異常,因?yàn)闂J怯邢薜模椒ㄕ{(diào)用太多次導(dǎo)致棧幀堆滿了棧,所以溢出。看下面代碼:

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() {
 // 瘋狂遞歸調(diào)用
 stackLength++;
 stackOverFlow();
}
}


在參數(shù)-Xss128k的情況下的報(bào)錯(cuò)。(eclipse中設(shè)置參數(shù):右鍵代碼選擇Run As-->Run Configurations,在Arguments欄下的VM arguments中填入?yún)?shù),再Apply,再run)

這里寫圖片描述

每次在方法執(zhí)行完畢的時(shí)候,虛擬機(jī)會(huì)自動(dòng)釋放掉為該棧所分配的空間,在棧中,對應(yīng)著一個(gè)棧幀的出棧。虛擬機(jī)會(huì)自動(dòng)分配與回收內(nèi)存,因此效率比較高。

三、總結(jié)

最后做一下棧的總結(jié):

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

注意??:JVM棧是每個(gè)線程私有的!

四、拓展閱讀

《JVM虛擬機(jī)專欄》

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2976

    瀏覽量

    105222
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    949

    瀏覽量

    28470
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SSM框架在Java開發(fā)中的應(yīng)用 如何使用SSM進(jìn)行web開發(fā)

    。以下是對SSM框架在Java開發(fā)中的應(yīng)用,以及如何使用SSM進(jìn)行web開發(fā)的介紹: SSM框架的組件及其作用 Spring :Spring是個(gè)開源的Java/Java EE全功能
    的頭像 發(fā)表于 12-16 17:28 ?661次閱讀

    Java 23功能介紹

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

    java知識(shí)-納秒

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

    Java中時(shí)間戳的使用

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

    Linux網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議是操作系統(tǒng)核心的個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議(Network Stack)負(fù)責(zé)實(shí)現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用程序發(fā)起的網(wǎng)絡(luò)
    的頭像 發(fā)表于 09-10 09:51 ?381次閱讀
    Linux網(wǎng)絡(luò)協(xié)議<b class='flag-5'>棧</b>的實(shí)現(xiàn)

    ?介紹Java開發(fā)的開源MES系統(tǒng)

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

    java反編譯能拿到源碼嗎

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

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

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

    聊聊JVM如何優(yōu)化

    進(jìn)行優(yōu)化。 1.JVM內(nèi)存模型 針對JAVA8的模型進(jìn)行討論,JVM的內(nèi)存模型主要分為幾個(gè)關(guān)鍵區(qū)域:堆、方法區(qū)、程序計(jì)數(shù)器、虛擬機(jī)和本地方法
    的頭像 發(fā)表于 08-05 17:49 ?532次閱讀
    聊聊<b class='flag-5'>JVM</b>如何優(yōu)化

    華納云:java web和java有什么區(qū)別java web和java有什么區(qū)別

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

    初識(shí)IO-Link及IO-Link設(shè)備軟件協(xié)議

    亞信IO-Link設(shè)備軟件協(xié)議是基于亞信電子AXM-IOLS IO-Link設(shè)備評(píng)估板設(shè)計(jì)的,搭載意法半導(dǎo)體 STM32F469AI微控制器,并在STM32CubeIDE開發(fā)環(huán)境中進(jìn)行開發(fā)。此
    的頭像 發(fā)表于 07-08 13:55 ?3025次閱讀
    <b class='flag-5'>初識(shí)</b>IO-Link及IO-Link設(shè)備軟件協(xié)議<b class='flag-5'>棧</b>

    探索虛擬線程:原理與實(shí)現(xiàn)

    的開銷。首先,創(chuàng)建成本不菲,因?yàn)槊慨?dāng)操作系統(tǒng)需要?jiǎng)?chuàng)建個(gè)新的平臺(tái)線程時(shí),它必須分配大量的內(nèi)存(通常以兆字節(jié)計(jì))來存儲(chǔ)線程的上下文信息、本機(jī)Java調(diào)用。這
    的頭像 發(fā)表于 06-24 11:35 ?372次閱讀
    探索虛擬線程:原理與實(shí)現(xiàn)

    已經(jīng)安裝了Java,且依然提示安裝Java是為什么?

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

    深入理解Java 8內(nèi)存管理機(jī)制及故障排查實(shí)戰(zhàn)指南

    Java的自動(dòng)內(nèi)存管理機(jī)制是由 JVM 中的垃圾收集器來實(shí)現(xiàn)的,垃圾收集器會(huì)定期掃描堆內(nèi)存中的對象,檢測并清除不再使用的對象,以釋放內(nèi)存資源。
    的頭像 發(fā)表于 04-04 08:10 ?1067次閱讀
    深入理解<b class='flag-5'>Java</b> 8內(nèi)存管理機(jī)制及故障排查實(shí)戰(zhàn)指南

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)

    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)
    的頭像 發(fā)表于 02-20 14:10 ?794次閱讀
    RK3568驅(qū)動(dòng)指南|驅(qū)動(dòng)基礎(chǔ)<b class='flag-5'>進(jìn)階</b>篇-<b class='flag-5'>進(jìn)階</b>5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)
    主站蜘蛛池模板: 色综合久久五月 | 夜夜爽一区二区三区精品 | 美女骚网站| 久久久久久久久久久观看 | 亚洲 欧美 自拍 另类 欧美 | 91大神大战丝袜美女在线观看 | 国产精品成人四虎免费视频 | 福利视频自拍 | 天天爽夜夜爽8888视频精品 | 末发育娇小性色xxxxx视频 | 日韩aa| 天天干天天澡 | 黄色在线网站视频 | 模特视频一二三区 | 欧美最猛黑人xxxx黑人猛交黄 | 成人欧美一区二区三区的电影 | 五月激情六月丁香 | 欧美高清milf在线播放 | 黄色在线视频免费 | 天天亚洲 | 新版天堂资源在线官网8 | 波多野结衣在线观看一区二区 | 无码一区二区三区视频 | 亚洲激情网站 | 色香蕉在线观看 | 亚洲精品视频网 | 国产午夜精品久久久久 | h视频在线观看网站 | 男女透逼视频 | 免费观看成人欧美1314www | 伊人婷婷涩六月丁香七月 | 日本不卡高清免费 | 影视精品网站入口 | 亚洲国产午夜精品理论片的软件 | 色午夜在线 | 欧美日日日 | 前后灌满白浆护士 | 成人国产日本亚洲精品 | 屁股趴过来欠打高h | 中文字幕一区二区三区永久 | 久久免费精品 |