大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java堆空間與堆棧內存

Java堆空間與堆棧內存

更新時間:2021-08-23 11:09:25 來源:動力節點 瀏覽1168次

什么是Java堆空間

它是由Java虛擬機在啟動時創建的。只要應用程序正在運行,就會使用內存。Java運行時使用它為對象和Java運行時環境 (JRE) 類分配內存。

創建對象時,它總是在Heap中創建并具有全局訪問權限。這意味著可以從應用程序的任何地方引用所有對象。

它由兩個概念管理:垃圾收集和年輕代、年老代。

垃圾收集通過清除方法中沒有任何引用的對象來釋放內存。這些是不再使用的對象。清除它們可確保它們不會占用堆中的空間。

年輕代、年老代通過將Java堆空間劃分為兩代來幫助確定垃圾收集對象的優先級。

托兒所是存儲新對象的年輕一代。當托兒所已滿時,垃圾收集會將其清理干凈。請注意,只有托兒所的內存空間已滿。老一代還有記憶。

老年代是對象的家園,它們已經存在了足夠長的時間。當老年代空間用完時,垃圾回收會移除老年代空間中未使用的對象。同樣,當舊的垃圾收集發生時,只有部分堆已滿。托兒所還有空位。

什么是Java堆棧內存?

這是調用它們的方法時存儲變量值的臨時內存。方法完成后,包含這些值的內存將被清除,以便為新方法騰出空間。

當調用一個新方法時,會在堆棧中創建一個新的內存塊。這個新塊將存儲該方法調用的臨時值以及對存儲在該方法正在使用的堆中的對象的引用。

此塊中的任何值只能由當前方法訪問,一旦結束將不存在。

當該方法結束時,該塊將被擦除。調用的下一個方法將使用該空塊。

這種“后進先出”方法可以輕松找到所需的值并允許快速訪問這些值。

如何在Java應用程序中使用它們

讓我們看一個非常簡單的Java應用程序示例,了解如何分配內存。

包裝融為一體。journaldev 。測試;包裝融為一體。journaldev 。測試;public class Memory { public static void main ( String [] args ) { // 第 1 行 int i=1; // 第 2 行 Object obj = new Object(); // 第 3 行 Memory mem = new Memory(); // 第 4 行 mem.foo(obj); // 第 5 行 } // 第 9 行private void foo ( Object param ) {     
    // 第 6 行 String str = param.toString(); //// 第 7 行 System.out.println(str); } // 第 8 行}

在上面來自JournalDev.com 的例子中,Stack 和 Heap 的使用解釋如下:

當程序運行時,所有運行時類都被加載到堆空間中。

Java 運行時在第 1 行發現 main() 方法線程時創建堆棧內存以供其使用。在第 2 行,創建一個原始局部變量,該變量存儲在 main() 方法的堆棧內存中。

因為對象是在第 3 行創建的,所以它是在堆內存中創建的,它的引用存儲在堆棧內存中。在第 4 行,創建 Memory 對象時會發生類似的過程。

在第 5 行調用 foo() 方法時,會為其創建 Stack 頂部的一個塊。由于 Java 是按值傳遞的,因此在第 6 行的 foo() 堆棧塊中創建了對 Object 的新引用。

在第 7 行,創建了一個字符串,它位于堆空間的字符串池中,同時在 foo() 堆棧空間中創建了它的引用。在第 8 行,foo() 方法被終止,堆棧中為其分配的內存塊被釋放。

最后,在第 9 行,main() 方法終止,并銷毀為其創建的堆棧內存。因為程序在這一行結束,Java Runtime 釋放所有內存并結束程序的執行。

主要區別

Java堆空間在整個應用程序中使用,但堆棧僅用于當前運行的方法(或多個方法)。

堆空間包含所有創建的對象,但堆棧包含對這些對象的任何引用。

存儲在堆中的對象可以在整個應用程序中訪問。原始局部變量只能訪問包含它們的方法的堆棧內存塊。

堆空間中的內存分配是通過一個復雜的、年輕代、年老代系統訪問的。堆棧是通過后進先出 (LIFO) 內存分配系統訪問的。

只要應用程序運行,堆空間就存在,并且大于堆棧,這是臨時的,但速度更快。

以上就是動力節點小編介紹的"Java堆空間與堆棧內存",希望對大家有幫助,想了解更多可查看Java堆棧。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美色精品天天在线观看视频 | 国产乱子伦一级毛片 | 玖玖在线视频 | 成人人免费夜夜视频观看 | 久久精品国产影库免费看 | 99久热国产精品视频尤物不卡 | 4虎最新网址 | 特级毛片 | 亚洲男人的天堂久久无 | 神马影院我不卡影院 | 玖玖精品视频在线 | 特级一级毛片视频免费观看 | 亚洲一区中文字幕在线观看 | 久久99精品久久久久久国产人妖 | 男人的午夜 | 国产免费播放 | 国产高清在线a视频大全凹凸 | 成人国产片免费 | 久久精品国产99久久99久久久 | 毛片黄片视频 | 黄色一级毛片在线观看 | 久久国产精品高清一区二区三区 | 大学生一级毛片免费看真人 | 香蕉久久a毛片 | 婷婷色九月综合激情丁香 | 奇米第四色在线视频 | 偷拍肉窝窝视频在线播放 | 久久91综合国产91久久精品 | 成年女人毛片免费观看中文w | 婷婷的久久五月综合先锋影音 | 婷婷综合久久中文字幕 | 日本一级α一片免费视频 | 一级黄色录像免费观看 | 老司机深夜影院入口aaaa | 亚洲精品国产精品乱码不卞 | 男女xxⅹ爽免费视频 | 久久久久久久免费视频 | 男女一级毛片 | 91最新视频在线观看 | 四虎免费影院4hu永久免费 | 蜜桃日本一道无卡不码高清 |