成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JVM垃圾回收機制使用秘笈

開發 后端
本文向大家描述一下幾種JVM垃圾回收機制,gc即垃圾收集機制是指jvm用于釋放那些不再使用的對象所占用的內存。java語言并不要求jvm有gc,也沒有規定gc如何工作。

你對JVM垃圾回收機制是否熟悉,這里和大家分享一下,垃圾收集的目的在于清除不再使用的對象。gc通過確定對象是否被活動對象引用來確定是否收集該對象。gc首先要判斷該對象是否是時候可以收集。

JVM垃圾回收機制詳解

1.JVM的gc概述
  
  gc即垃圾收集機制是指jvm用于釋放那些不再使用的對象所占用的內存。java語言并不要求jvm有gc,也沒有規定gc如何工作。不過常用的jvm都有gc,而且大多數gc都使用類似的算法管理內存和執行收集操作。
  
  在充分理解了垃圾收集算法和執行過程后,才能有效的優化它的性能。有些垃圾收集專用于特殊的應用程序。比如,實時應用程序主要是為了避免垃圾收集中斷,而大多數OLTP應用程序則注重整體效率。理解了應用程序的工作負荷和jvm支持的垃圾收集算法,便可以進行優化配置垃圾收集器。
  
  垃圾收集的目的在于清除不再使用的對象。gc通過確定對象是否被活動對象引用來確定是否收集該對象。JVM垃圾回收機制首先要判斷該對象是否是時候可以收集。兩種常用的方法是引用計數和對象引用遍歷。
  
1.1.引用計數
  
  引用計數存儲對特定對象的所有引用數,也就是說,當應用程序創建引用以及引用超出范圍時,jvm必須適當增減引用數。當某對象的引用數為0時,便可以進行垃圾收集。
  
1.2.對象引用遍歷
  
  早期的jvm使用引用計數,現在大多數jvm采用對象引用遍歷。對象引用遍歷從一組對象開始,沿著整個對象圖上的每條鏈接,遞歸確定可到達(reachable)的對象。如果某對象不能從這些根對象的一個(至少一個)到達,則將它作為垃圾收集。在對象遍歷階段,gc必須記住哪些對象可以到達,以便刪除不可到達的對象,這稱為標記(marking)對象。
  
  下一步,gc要刪除不可到達的對象。刪除時,有些gc只是簡單的掃描堆棧,刪除未標記的未標記的對象,并釋放它們的內存以生成新的對象,這叫做清除(sweeping)。這種方法的問題在于內存會分成好多小段,而它們不足以用于新的對象,但是組合起來卻很大。因此,許多gc可以重新組織內存中的對象,并進行壓縮(compact),形成可利用的空間。
  
  為此,gc需要停止其他的活動活動。這種方法意味著所有與應用程序相關的工作停止,只有gc運行。結果,在響應期間增減了許多混雜請求。另外,更復雜的gc不斷增加或同時運行以減少或者清除應用程序的中斷。有的gc使用單線程完成這項工作,有的則采用多線程以增加效率。#p#
  
2.幾種JVM垃圾回收機制用法

2.1.標記-清除收集器
  
  這種收集器首先遍歷對象圖并標記可到達的對象,然后掃描堆棧以尋找未標記對象并釋放它們的內存。這種收集器一般使用單線程工作并停止其他操作。
  
2.2.標記-壓縮收集器
  
  有時也叫標記-清除-壓縮收集器,與標記-清除收集器有相同的標記階段。在第二階段,則把標記對象復制到堆棧的新域中以便壓縮堆棧。這種收集器也停止其他操作。
  
2.3.復制收集器

  
  JVM垃圾回收機制中這種收集器將堆棧分為兩個域,常稱為半空間。每次僅使用一半的空間,jvm生成的新對象則放在另一半空間中。gc運行時,它把可到達對象復制到另一半空間,從而壓縮了堆棧。這種方法適用于短生存期的對象,持續復制長生存期的對象則導致效率降低。
  
2.4.增量收集器

  
  增量收集器把堆棧分為多個域,每次僅從一個域收集垃圾。這會造成較小的應用程序中斷。
  
2.5.分代收集器
  
  這種收集器把堆棧分為兩個或多個域,用以存放不同壽命的對象。jvm生成的新對象一般放在其中的某個域中。過一段時間,繼續存在的對象將獲得使用期并轉入更長壽命的域中。分代收集器對不同的域使用不同的算法以優化性能。
  
2.6.并發收集器
  
  JVM垃圾回收機制中的并發收集器與應用程序同時運行。這些收集器在某點上(比如壓縮時)一般都不得不停止其他操作以完成特定的任務,但是因為其他應用程序可進行其他的后臺操作,所以中斷其他處理的實際時間大大降低。

2.7.并行收集器
  
  并行收集器使用某種傳統的算法并使用多線程并行的執行它們的工作。在多cpu機器上使用多線程技術可以顯著的提高java應用程序的可擴展性。

【編輯推薦】

  1. Java虛擬機概念及體系結構
  2. 發現Java虛擬機內存泄露問題
  3. 深入Java虛擬機:JVM中的Stack和Heap
  4. Java虛擬機發展回顧 為跨平臺而生
  5. Java虛擬機(JVM)中的內存設置詳解
責任編輯:佚名 來源: chinaitlab.com
相關推薦

2010-09-25 15:33:19

JVM垃圾回收

2010-09-25 15:26:12

JVM垃圾回收

2021-11-05 15:23:20

JVM回收算法

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2010-09-26 11:22:22

JVM垃圾回收JVM

2017-03-03 09:26:48

PHP垃圾回收機制

2017-08-17 15:40:08

大數據Python垃圾回收機制

2009-06-23 14:15:00

Java垃圾回收

2011-07-04 16:48:56

JAVA垃圾回收機制GC

2021-05-27 21:47:12

Python垃圾回收

2015-06-04 09:38:39

Java垃圾回收機

2017-06-12 17:38:32

Python垃圾回收引用

2011-06-28 12:39:34

Java垃圾回收

2009-12-09 17:28:34

PHP垃圾回收機制

2010-10-13 10:24:38

垃圾回收機制JVMJava

2021-12-07 08:01:33

Javascript 垃圾回收機制前端

2011-12-26 09:50:05

.NET垃圾回收

2024-02-22 17:15:22

JS垃圾回收機制

2010-09-26 14:08:41

Java垃圾回收

2017-10-12 12:41:11

PHP圾回收機制變量容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美专区在线 | 国产精品亚洲一区二区三区在线 | 中文字幕免费在线 | 成人午夜免费福利视频 | 国产特级毛片aaaaaa喷潮 | 久久久久久99 | 日本久久一区二区三区 | 狠狠干影院 | 一区二区三区四区在线视频 | 精品九九 | 992人人草| 91亚洲国产成人久久精品网站 | 欧美日韩在线免费观看 | 精品一区二区久久久久久久网精 | 日本成人久久 | 毛片国产| 中文字幕在线第二页 | av毛片| 亚洲永久 | 国产精品视频一区二区三区 | 亚洲午夜精品 | 国产成人免费视频 | 古典武侠第一页久久777 | 欧美一区二区免费 | 免费毛片网站 | 欧美精品一区三区 | 亚洲精品电影在线观看 | 亚洲综合大片69999 | 亚洲精品成人免费 | 国产精品爱久久久久久久 | 精品在线看 | 97av视频 | 少妇精品亚洲一区二区成人 | 国产精品免费一区二区三区四区 | 国产日韩久久 | 九九精品久久久 | 91综合网| 欧美黄色免费网站 | 国产99视频精品免视看9 | 91大片| 中文字幕亚洲区一区二 |