大战熟女丰满人妻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 的自動分配設置文件在顯式堆區域中創建指定對象。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美一级毛片免费网站 | 日韩性生活视频 | 色淫影院 | 色婷婷综合欧美成人 | 四虎2022 | 四虎网站最新 | 久久―日本道色综合久久 | 亚洲成a人片在线v观看 | 国产在视频线精品www666 | 在线欧美v日韩v国产精品v | 无人码一区二区三区视频 | 色综合久久久久久久久五月 | 中文字幕亚洲精品日韩精品 | 欧美性xxxxxx性| 国产成人久久精品 | 国产一区二区三区在线视频 | 国产精品福利在线观看免费不卡 | 欧美成人免费全部观看天天性色 | 日韩视频 中文字幕 视频一区 | 免费看欧美一级特黄a大片一 | 午夜私人影院粉色视频我要 | 亚洲第二区| 华人欧美国产在线精品 | 夜色亚洲| 久久精品国产亚洲妲己影院 | 97久久精品国产精品青草 | 男人资源在线观看 | 欧美天天干 | 国产精品玖玖玖在线观看 | www.欧美| 奇米888第四色 | 中文字幕一区在线观看视频 | 日韩成人免费aa在线看 | 国产高清国产专区国产精品 | 中文字幕在线观看免费视频 | 九九99久久精品在免费线bt | 亚洲精品人成网线在线 | 亚洲综合套图 | 亚洲伊人tv综合网色 | 色婷婷中文字幕 | 国产大毛片 |