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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 告訴你什么是Java垃圾回收機制

告訴你什么是Java垃圾回收機制

更新時間:2022-06-02 10:13:48 來源:動力節點 瀏覽1551次

什么是Java垃圾回收機制?動力節點小編來為大家解答。

什么是垃圾回收?

垃圾收集是一種自動收集某個程序不再需要的內存區域并使該內存區域可供其他程序使用的技術。

程序的處理在垃圾回收執行過程中停止。因此,垃圾收集能否正常運行,極大地影響了系統性能。

程序中使用new創建的 Java 對象,占用 JavaVM 管理的內存空間。從創建 Java 對象到它變得多余的時間段稱為Java對象的生命周期。

Java 對象有兩種類型;壽命短的和壽命長的。對于在服務器上運行的 Java 應用程序,許多 Java 對象由請求和響應或事務管理創建。這些 Java 對象的生命周期很短,因為它們在處理結束時變得多余。另一方面,在應用程序運行時不斷使用的 Java 對象具有較長的生命周期。

為了有效地執行垃圾回收,您需要通過對生命周期短的對象執行垃圾回收來使內存回收有效。避免對重復使用的長壽命對象進行不必要的垃圾回收,有助于防止系統性能下降。這是通過按代垃圾收集來實現的。

在按代垃圾回收中,Java 對象通過將它們分成兩個區域進行管理;存儲壽命短的對象的 New 區域和存儲壽命長的對象的 Tenured 區域。New 區域進一步分為 Eden 區域和 Survivor 區域,Eden 區域保存最近使用new創建的對象,Survivor 區域保存即使多次運行垃圾收集后仍未收集的對象。執行垃圾收集超過固定次數的New區域的Java對象被認為是長期需要的Java對象,這些Java對象移動到Tenured區域。

下圖顯示了內存空間和按代垃圾回收管理的 Java 對象的概覽:

分代垃圾回收執行的垃圾回收有以下兩種類型:

復制垃圾收集

復制垃圾收集僅針對 Eden 區域和 Survivor 區域。當您使用 Eden 區域創建 Java 對象時,會發生復制垃圾收集。

您可以通過指定 Java HotSpot VM 選項來選擇串行復制垃圾收集和并行復制垃圾收集。

因為串行復制垃圾回收的處理是并行執行的,所以可以高速執行并行復制垃圾回收。但是,如果您選擇并行復制垃圾回收,則無法使用顯式管理堆功能。

默認選擇串行復制垃圾收集。請注意,本章介紹的內容適用于這兩種類型的復制垃圾回收。

物體的壽命與年齡的關系

對一個對象執行復制垃圾回收的次數稱為對象的年齡。

下圖顯示了一個對象的壽命和年齡之間的關系:

應用程序啟動后,初始化過程完成,復制垃圾回收已經執行了多次,長期需要的長壽命對象移動到Tenured區。結果,在啟動應用程序后不久,Java 堆就達到了穩定狀態,并且大多數創建的 Java 對象都是生命周期較短的對象。特別是,如果新區域的調整已經適當執行,那么在 Java 堆穩定后,大部分生命周期較短的對象都會在第一次復制垃圾回收期間被回收。

復制垃圾回收機制

在JavaVM中,執行復制垃圾回收的New區的內存空間被劃分為Eden區和Survivor區。Survivor 區域進一步分為 From 空間和 To 空間。From 空間和 To 空間具有相同的內存大小。

下圖是New區域的配置:

Eden 區域是最初存儲使用new創建的對象的區域。當在程序中執行new時,會分配來自 Eden 區域的內存。

當 Eden 區域變滿時,將執行復制垃圾回收。復制垃圾回收中進行如下處理:

在 Eden 區域和 Survivor 區域的 From 空間中存在的 Java 對象中,正在使用的對象被復制到 Survivor 區域的 To 空間。未使用的 Java 對象將被銷毀。

Survivor 區域的 To 空間和 From 空間被交換。

結果,Eden 區域和 To 空間變為空,而正在使用的對象保留在 From 空間中。

保存對象

將那些年齡未達到閾值的 Java 對象移動到 Tenured 區域的活動稱為Saving。當 Eden 區域和 From 空間中正在使用的對象數量增加并且這些對象將被移動到的 To 空間的內存大小不足以在復制垃圾回收期間保存這些對象時,就會發生保存。在這種情況下,無法移動到 To 空間的對象將移動到 Tenured 區域。

當對象被保存時,原本不應該保存在Tenured區的壽命短的對象,被保存到Tenured區。如此反復,本應通過復制垃圾回收來回收的對象不斷在內存空間中累積,從而增加 Java 堆的內存使用量,最終發生完整的垃圾回收。

不執行垃圾回收的區域(使用顯式內存管理功能的顯式堆區域)

在 JavaVM中,除了 Eden 區域、Survivor 區域和 Tenured 區域之外,您還可以使用稱為Explicit heap的區域。垃圾回收不在顯式堆區域中執行。

使用自動分配設置文件和顯式內存管理功能 API 指定要保存在顯式堆區域中的對象。在指定對象從 Survivor 區域移動到 Tenured 區域的時刻,指定對象被移動到 Explicit heap 區域。您可以指定沒有被復制垃圾回收回收的長生命周期的對象,以減少Tenured區的內存使用,并防止完全垃圾回收的發生。您還可以使用顯式內存管理功能或顯式內存管理功能 API 的自動分配設置文件在顯式堆區域中創建指定對象。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久久久一级毛片免费无遮挡 | 欧美在线观看一区二区 | 日韩在线一区视频 | 欧美在线色 | 四虎永久精品免费网址大全 | 日韩欧美中文字幕出 | 久久天堂夜夜一本婷婷麻豆 | 久久亚洲精品中文字幕亚瑟 | 国产精品成人在线播放 | 男女拍拍视频黄的全免费 | 美女天天干 | 暴劫倾情无删减在线播放 | 亚洲日韩中文字幕在线播放 | 欧美日韩在线播放一区二区三区 | 色妞色综合久久夜夜 | 欧美中文字幕在线观看 | 伊人五月在线 | 成人私人影院在线观看网址 | 日本性网址| 中文字幕在线观看国产 | 精品视频免费在线 | 国产国语videosex另类 | 日本一区二区在线视频 | 一区二区三区免费精品视频 | 99国产精品免费视频 | 日本毛片高清免费视频 | 欧美三级欧美成人高清www | 99精品视频在线观看 | 爱爱免费视频网站 | 天天爱天天干天天 | 日韩国产欧美一区二区三区在线 | 欧美性猛交xxx嘿人猛交 | 国产精品久久久久久久久久日本 | 97在线碰碰观看免费高清 | 亚洲 中文 欧美 日韩 在线人 | 四虎4hu永久免费 | 99视频免费播放 | 天天摸天天操天天射 | 一区二区三区在线观看视频 | 国产精品9999久久久久 | 不卡的毛片 |