精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

什么是垃圾回收?程序的自動內存管理

譯文
開發 前端
大多數現代編程語言都使用垃圾回收機制,但開發人員可以選擇如何實現和調優垃圾回收。人們需要了解垃圾回收在Java、Python和C#等語言中的工作原理。

譯者 | 李睿

審校 | 重樓

本文對垃圾回收進行介紹,其中包括垃圾回收算法的概述,以及垃圾回收是如何在一些流行的編程語言(包括Java和Python)中實現的。在討論這個問題之前,首先考慮垃圾回收機制的優點和缺點。為什么它是內存分配錯誤的常見解決方案?以下從不使用垃圾回收的C和C++等語言中內存管理的風險開始。

C/ C ++中內存管理的風險

內存分配問題只是C/C++常見問題的一個子集,這些問題會導致潛在的錯誤和漏洞,但它們是一個很大的子集,很難追蹤和修復。內存分配錯誤包括以下場景:

  • 未能釋放已分配的內存,最終可能會耗盡系統中的所有內存,不僅會使程序崩潰,還會使計算機崩潰。
  • 在釋放內存之后,嘗試通過指針讀取或寫入緩沖區,可能會產生隨機結果(也稱為懸空指針)。
  • 雙重釋放內存塊,這可能會導致內存管理器崩潰,最終導致程序甚至整個系統崩潰。

其他常見的C/C++漏洞包括緩沖區溢出和字符串操作,它們可以用數據覆蓋代碼。“有趣”的部分是網絡攻擊者對數據進行處理,使其成為惡意可執行代碼,然后設法運行代碼。

很多人說這種情況不會再發生了,因為在保護模式系統中有單獨的代碼和數據段。不幸的是,這種情況仍然會發生。例如,一個程序在字符串中構造SQL語句,然后將其發送到數據庫執行,這通常會創建SQL注入漏洞。當然,在避免SQL注入漏洞方面有一些良好的記錄的最佳實踐,但是在數據庫客戶端中不斷出現這類錯誤,表明不是每一位程序員都會遵循最佳實踐。

垃圾回收:具有缺陷的糾正方法

使用垃圾回收可以完全消除主要的內存分配和回收問題,但這是有代價的。最大的問題是垃圾回收器的開銷;當垃圾回收器運行時出現不可預測的暫停;并且當服務器進程停止時增加了延遲。后一個問題經常出現在基于Java的服務器程序中。

垃圾回收的開銷可能很大,涉及內存和性能之間的權衡。開發人員Matthew Hertz和Emery D.Berger在2005年發表的一篇論文指出:“具有五倍內存的蘋果風格的分代回收器具有非復制的成熟空間,與基于訪問的顯式內存管理的性能相匹配。而如果只有三倍的內存,回收器的運行速度比顯式內存管理平均慢17%。然而,如果只有兩倍的內存,垃圾回收的性能降低了近70%。當物理內存不足時,分頁導致垃圾回收的運行速度比顯式內存管理慢一個數量級。”

蘋果風格的分代回收器是保守的垃圾回收器,更具攻擊性的垃圾回收器有時可以用更少的內存表現得更好。

停滯和延遲意味著基于垃圾回收的語言對于需要最小化延遲的實時程序和高吞吐量服務器來說可能不是最優的。例如,在實時Lisp和實時Java方面已經有了一些嘗試,所有這些嘗試都修改或消除了垃圾回收器。

最近,一些Java和Scala服務器采用非垃圾回收的編程語言進行了重寫,例如Scylla(用C++重寫Cassandra)和Redpanda(用C++替換Kafka插件)。在“Scylla”和“Redpanda”中,與最初的服務器相比,已經顯著減少延遲。對于相同的負載,兩者都需要更小的集群。

垃圾回收算法

垃圾回收有幾十種算法,以下來看看一些最重要的算法及其顯著特征。

引用計數

在引用計數中,程序將對資源的引用、指針或句柄的數量存儲為分配資源的一部分,并在添加或刪除引用時增加或減少計數。當引用計數為零時,資源可以被釋放。內存垃圾回收只是引用計數的應用之一;它也用于系統對象、Windows COM對象和文件系統塊或文件的釋放控制。

引用計數有兩個主要的缺點:過于頻繁的更新和循環引用。控制更新頻率的一種方法是允許編譯器對相關對象進行批處理。處理循環引用的一種方法是不定期運行跟蹤垃圾以刪除不可訪問的循環,循環引用使計數不會達到零。

跟蹤垃圾回收

跟蹤垃圾回收是引用計數的主要替代方案,包括以下所有算法以及更多的算法。通常跟蹤垃圾回收的思想是,跟蹤過程從一些根對象(如當前局部變量、全局變量和當前函數參數)開始,并根據引用確定哪些對象是可訪問的,然后對所有無法訪問的對象進行垃圾回收。跟蹤垃圾回收是如此普遍,有時簡單地稱之為垃圾回收。

標記和掃描

1960年發布的“na?ve”標記和掃描算法可以追溯到John McCarthy開發的Lisp編程語言,它的工作原理是首先凍結系統,然后將從根集中可訪問的所有對象標記為“正在使用”。第三步是清除所有內存并釋放未標記為“正在使用”的任何塊。最后,清除所有剩余內存塊中的“正在使用”位,為下一次回收做準備,并允許系統繼續執行。顯然,這對于實時系統是不合適的。

標記和掃描的一種變體使用了三種“顏色”的內存塊:白色塊是不可訪問的,如果算法結束時它們仍然在白色集合中,則將釋放它們;黑色塊可以從根訪問,并且沒有對白色集合中的對象的外向引用;灰色塊可以從根訪問,但還需要掃描對“白色”對象的引用。在算法完成后,灰色塊全部進入黑色集合。通常情況下,初始標記將根引用的所有塊放入灰色集合中,將所有其他塊放入白色集合中。

三色標記算法分為三步:

(1)從灰色集合中選擇一個對象,并將其移動到黑色集合中。

(2)將其引用的每個白色對象移動到灰色集合。這確保了該對象及其引用的任何對象都不能被垃圾回收。

(3)重復最后兩個步驟,直到灰色集合為空。

當灰色集合為空時,所有白色塊都可以釋放。三色標記算法可以在程序運行時在后臺執行;開銷仍然存在,但它不會讓“整個世界停止”。

復制回收

復制回收(又名半空間垃圾回收)的思想是將內存分為兩個大小相等的區域,分別稱為“從空間”和“到空間”。在空間中按順序分配內存塊,直到空間填滿,然后執行回收。這交換了區域的角色,并將活動對象從“從空間”復制到“到空間”,在“到空間”的末尾留下一塊空閑空間(對應于所有不可訪問對象使用的內存)。

復制回收存在復雜性。最大的一個問題是,當復制數據塊時,它們的地址會發生變化;一種解決方案是維護轉發地址表。另一個主要問題是,復制集合所需的內存是標記和掃描所需內存的兩倍。如果大部分內存是垃圾,復制回收比標記和掃描要快,但如果大部分內存可訪問,則復制回收較慢。

標記和壓縮

標記和壓縮回收的本質是復制在單個內存空間內運行的回收。標記和壓縮回收器掃描所有可訪問的對象,并將它們壓縮在堆的底部,這使得堆的頂部可供使用。標記和壓縮回收的最大缺點是比較耗時。

分代回收

分代回收根據對象的年齡(也就是代)將堆劃分為多個空間(通常是兩個或三個)。一般來說,最近的對象比舊的對象更可能是垃圾,因此在大多數情況下掃描新對象以尋找垃圾,而不使用舊對象是有意義的。一些分代回收器在不同的代上使用不同的掃描頻率或回收算法。

哪些編程語言使用垃圾回收?

自從John McCarthy在1958年開發Lisp編程語言以來,Lisp就一直在用于垃圾回收。Java、Scala、Python和.Net/C#都是流行的垃圾回收語言。其他垃圾回收語言包括相對年輕的Go、Ruby、D、OCaml和Swift,以及較老的語言Eiffel、Haskell、ML、Modula-3、Perl、Prolog、Scheme和Smalltalk。

Java、Python和.Net/C#是一些比較流行的實現垃圾回收的編程語言。Java虛擬機(JVM)實際上提供了四種不同的垃圾回收器:串行、并行、并發標記、掃描,以及第一個垃圾回收器G1GC。G1GC現在是Java中的默認值,它是一個區域化和世代并行壓縮收集器,可實現軟實時目標。

Python(特別是標準的CPython實現)將引用計數與僅專注于清理容器對象的三級代收集相結合。.NETCLR(公共語言運行時)使用三級生成標記和緊湊收集算法。CLR還將內存對象分為兩個堆,一個用于大型對象(85000字節或更高),另一個用于小型對象;大型對象堆通常不會被壓縮,只是被標記和掃描,但如果需要可以被壓縮。

結論

正如人們所看到的,處理垃圾回收的方法有很多,其中大多數都有自己的用途。更成熟的垃圾回收實現結合了多種算法,并且多年來進行了大量調優,以盡量減少延遲。

原文標題:What is garbage collection? Automated memory management for your programs作者:Martin Heller

責任編輯:華軒 來源: 51CTO
相關推薦

2019-06-24 19:00:09

JavaScript內存泄漏垃圾回收

2011-08-15 16:28:06

Cocoa內存管理

2023-12-19 21:52:51

Go垃圾回收開發

2023-02-28 07:56:07

V8內存管理

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2009-09-02 09:23:26

.NET內存管理機制

2025-07-23 07:40:29

2024-02-04 09:18:00

Python內存管理垃圾回收

2014-12-19 11:07:40

Java

2017-04-25 14:39:55

JVM內存Java

2013-10-11 17:32:18

Linux運維內存管理

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2017-02-21 16:40:16

Android垃圾回收內存泄露

2025-11-03 08:14:06

2009-12-09 17:28:34

PHP垃圾回收機制

2020-11-18 10:54:29

垃圾回收器演進

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-01-20 10:34:49

JVM垃圾回收算法

2021-01-04 10:08:07

垃圾回收Java虛擬機

2024-08-20 16:27:54

點贊
收藏

51CTO技術棧公眾號

最新av在线播放| 国产精品igao网网址不卡| 手机在线精品视频| 久久午夜激情| 久久久999精品免费| 国产一线在线观看| 粉嫩一区二区三区| 亚洲伦理在线精品| 欧美福利精品| a天堂视频在线| 亚洲欧美成人综合| 欧美成人一区二区三区电影| 国产成人精品无码片区在线| 亚洲精品555| 亚洲国产精品久久久久婷婷884| 欧美日韩亚洲一区二区三区四区| 一区二区三区免费观看视频| 亚洲黄页一区| 久久精品人人做人人爽| 国产精品无码毛片| 日韩欧美久久| 欧美亚洲一区三区| 日本在线xxx| 国产在线高清视频| 国产亚洲精品aa午夜观看| 风间由美一区二区三区| 亚洲中文一区二区三区| 母乳一区在线观看| 欧美精品电影在线| 麻豆天美蜜桃91| 精品一区二区三区在线| 亚洲国产精品嫩草影院久久| 亚洲色图欧美自拍| 亚洲成人va| 欧美视频中文在线看| 日韩精品免费一区| 国产黄网站在线观看| 国产欧美视频一区二区| 久久亚洲免费| 亚洲欧美色视频| 顶级嫩模精品视频在线看| 成人免费淫片视频软件| 国产一区二区视频免费| 亚洲影视综合| 97超级碰在线看视频免费在线看| 免费在线黄色片| 欧美精品黄色| 欧美黑人性猛交| 免费在线视频一区二区| 欧美人与禽猛交乱配视频| 欧洲杯半决赛直播| 91精品国产综合久久小美女| 性生活免费在线观看| 快播电影网址老女人久久| 五月开心婷婷久久| 老太脱裤子让老头玩xxxxx| 精品精品导航| 亚洲尤物视频在线| youjizz.com在线观看| 亚洲精品天堂| 亚洲午夜av在线| 久青草视频在线播放| 最爽无遮挡行房视频在线| 亚洲欧美国产三级| 久久久久久久香蕉| av手机在线观看| 狠狠爱在线视频一区| 丰满人妻中伦妇伦精品app| 97超碰免费在线| 欧美视频裸体精品| 免费涩涩18网站入口| 91麻豆精品| 日韩亚洲欧美在线观看| 成人区人妻精品一区二| 亲子伦视频一区二区三区| 亚洲欧美精品一区二区| 欧美日韩生活片| 亚洲乱码电影| 性欧美长视频免费观看不卡| 中文字幕av影院| 麻豆免费看一区二区三区| 91日韩在线视频| 黄色av小说在线观看| 久久综合成人精品亚洲另类欧美 | 午夜精品一区二区三区在线视频| 午夜毛片在线观看| 麻豆一区二区三| 国产精品初高中精品久久| 青青青草原在线| 一区在线播放视频| 成年人网站免费视频| 外国电影一区二区| 日韩免费看网站| 瑟瑟视频在线观看| 亚洲综合中文| 国产成人精品999| 精品欧美在线观看| 国产欧美综合在线| 日本亚洲不卡| 国产一区二区三区综合| 91丨九色丨国产| 天堂av在线资源| 亚洲欧洲性图库| 成人羞羞视频免费| 欧美激情 一区| 中文在线日韩| 欧美一级大片视频| a天堂中文在线观看| 97精品电影院| 亚洲av综合色区| 精品无人乱码一区二区三区 | 国产wwwxxx| 久久―日本道色综合久久| 日本三级中文字幕在线观看| 欧美电影网址| 亚洲高清不卡av| 日本老熟俱乐部h0930| 奇米影视在线99精品| 国产精品一区而去| 成人日韩欧美| 欧美日韩中文字幕一区| 亚洲最大成人网站| 影音先锋中文字幕一区| 成人免费视频a| 爱爱爱免费视频在线观看| 激情成人在线视频| 精品伦一区二区三区| 国产精品成人一区二区不卡| 国产第一区电影| 日本亚洲欧美| 亚洲一区av在线| 亚洲第一色av| 久久精品国产亚洲夜色av网站| 青青草成人在线| 亚欧洲精品视频| 午夜精品成人在线视频| 香蕉视频免费网站| 亚洲国产精品久久久天堂| 国产一区私人高清影院| 在线观看国产原创自拍视频| 五月天亚洲精品| 天天躁日日躁狠狠躁av麻豆男男 | 97免费视频在线| 超碰福利在线观看| 一区二区高清免费观看影视大全 | 亚洲国产成人在线| 色一情一乱一伦一区二区三区日本| 欧美美女黄色| 欧美在线激情视频| 欧美日本网站| 在线日韩一区二区| 正在播放国产对白害羞| 蜜臀精品一区二区三区在线观看| 日韩精品一线二线三线| 播放一区二区| 中文字幕综合在线| 国产精品久久久久久久一区二区 | 欧美人成在线视频| 欧美 日韩 国产 精品| 精品国产乱码久久久久久婷婷 | 一区二区三区在线视频播放 | 久久九九全国免费| 热久久精品免费视频| 99久久.com| 99中文视频在线| 亚洲啊v在线| 在线国产精品播放| a视频免费在线观看| 亚洲第一激情av| 国产呦小j女精品视频| 日韩和欧美一区二区三区| 亚洲午夜精品久久久中文影院av| 国产一区二区av在线| 欧美激情一级欧美精品| 男人天堂网在线| 欧美精品国产精品| 欧洲grand老妇人| 国产激情一区二区三区桃花岛亚洲| 欧美伦理一区二区| 欧美成人免费全部网站| 美女精品视频一区| 天天舔天天干天天操| 欧美性受xxxx| 久一视频在线观看| 国产三级精品视频| 欧美色图校园春色| 亚洲一区不卡| 亚洲欧美日产图| 99国产精品免费网站| 日本成熟性欧美| 黄色网址在线免费| 日韩成人在线视频网站| 亚洲无码久久久久久久| 亚洲成人在线网站| www成人啪啪18软件| 福利视频网站一区二区三区| 日韩中文字幕二区| 国产精品a久久久久| 欧美亚洲免费在线| 一区二区三区高清在线观看| 国产99久久精品一区二区| 中文字幕有码在线观看| 亚洲网站在线观看| 韩国av永久免费| 欧美日韩一区二区三区四区| 国产女同在线观看| 国产精品传媒视频| 一本色道久久综合亚洲精品图片| 国产做a爰片久久毛片| 99热成人精品热久久66| 国产一区日韩欧美| 一区二区三区我不卡| 在线日本制服中文欧美| 国产精品美女诱惑| 蜜桃在线一区| 成人妇女免费播放久久久| 最新日韩三级| 欧美性资源免费| 精灵使的剑舞无删减版在线观看| 日日骚av一区| 国产中文字幕在线播放| 日韩av在线免播放器| 亚洲av无码乱码国产精品久久| 欧美日韩精品一区视频| 一级黄色av片| 色综合天天综合网天天狠天天 | 视频在线不卡| 亚洲成人免费网站| 不卡av中文字幕| 日韩一级视频免费观看在线| 一级片aaaa| 欧美日韩在线播放三区| 人人妻人人爽人人澡人人精品| 亚洲超碰97人人做人人爱| 黄色一级视频免费观看| 亚洲美女少妇撒尿| 超碰手机在线观看| 亚洲精品你懂的| 五月婷婷六月香| 中文字幕在线不卡一区| 日韩欧美在线视频播放| 欧美激情在线一区二区| 国产精品久久免费观看| 国产人成一区二区三区影院| 法国空姐电影在线观看| 久久久精品中文字幕麻豆发布| 中文字幕一区二区三区人妻| 91色乱码一区二区三区| 蜜桃av免费看| 国产欧美综合色| 5566中文字幕| 伊人色综合久久天天| 少妇影院在线观看| 亚洲在线一区二区三区| 国产无遮挡免费视频| 无码av中文一区二区三区桃花岛| 日本特黄一级片| 欧美日韩精品在线播放| 老熟妇仑乱一区二区av| 色8久久人人97超碰香蕉987| 中文字幕人妻色偷偷久久| 欧美剧在线免费观看网站| 99热这里是精品| 精品国产一区二区三区久久久蜜月 | 久久久精品免费看| 日本高清不卡在线观看| 亚洲影视一区二区| 精品久久久久久久人人人人传媒 | 这里只有精品在线播放| 麻豆视频在线免费观看| 久久久免费精品视频| 一级毛片久久久| 国产精品主播视频| 一区二区三区免费在线看| 九九九九九精品| 成人在线免费视频观看| 看全色黄大色大片| 一本不卡影院| 亚洲美女爱爱视频| 成人av网站在线观看免费| 亚洲欧洲久久久| 1区2区3区欧美| 亚洲天堂日韩av| 欧美日韩一区二区三区在线| 丰满人妻一区二区| 国产亚洲激情在线| 人人超在线公开视频| 日本久久久久亚洲中字幕| 99视频这里有精品| 精品视频免费观看| 亚洲精品成人无限看| 黄色片视频在线免费观看| 韩国一区二区在线观看| 三级电影在线看| 最新久久zyz资源站| 欧美三级一区二区三区| 91精品国产入口| 极品美乳网红视频免费在线观看| 久久香蕉频线观| 粉嫩一区二区三区| 国产精品一区二区三区观看| 日韩国产综合| 噜噜噜久久亚洲精品国产品麻豆| 久久成人免费日本黄色| 日本aaa视频| 一区二区激情小说| 97成人在线观看| 亚洲天堂网在线观看| а√天堂中文资源在线bt| 91精品国产综合久久香蕉| 亚洲精品国产setv| 久久国产午夜精品理论片最新版本| 日本视频一区二区三区| 91玉足脚交白嫩脚丫| 亚洲精品视频免费看| 中文字幕精品无码亚| 日韩经典中文字幕| 九色91在线| 不卡一区二区三区视频| 亚洲天天综合| 狠狠操狠狠干视频| 国产亚洲女人久久久久毛片| 二区视频在线观看| 亚洲第一av网站| 天天色天天射天天综合网| 成人h视频在线| 日韩免费久久| 亚洲色图久久久| 国产欧美一区二区三区沐欲| 无码人妻精品一区二区50| 日韩精品在线观看视频| 国产美女高潮在线观看| 国产伦精品一区二区三区视频黑人| 91成人看片| 91丝袜超薄交口足| 成人欧美一区二区三区白人| 97人人爽人人爽人人爽| 日韩中文字幕网| 99视频有精品高清视频| 国产一二三四五| 国产剧情一区在线| 欧美日韩精品在线观看视频| 日韩视频一区二区三区| 天使と恶魔の榨精在线播放| 99超碰麻豆| 亚洲无线视频| 国产精品无码电影| 日韩欧美精品中文字幕| 免费成人av电影| 国产精品9999| 国产精品久久久久无码av| 两性午夜免费视频| 亚洲一二三区视频在线观看| 欧美一级片免费| 欧美性视频在线| 国产精品一在线观看| 美女网站视频黄色| 亚洲视频狠狠干| 亚洲国产精品久久久久久久| 91精品国产乱码久久久久久蜜臀| 欧美freesex8一10精品| 日本成人在线免费视频| 国产精品理论片| www.97超碰| 欧美亚洲成人免费| 成人激情在线| 美女被艹视频网站| 婷婷久久综合九色综合绿巨人 | 一区二区三区中文字幕| 色呦呦中文字幕| 国产精品偷伦一区二区| 最新欧美人z0oozo0| 艳妇乳肉亭妇荡乳av| 欧美性猛片aaaaaaa做受| 国产剧情在线| 蜜桃视频日韩| 老司机午夜精品| 久久这里只有精品免费| 亚洲欧美日韩另类| www.久久久.com| 欧美黄色免费影院| 一区二区中文字幕在线| 天天操天天干天天干| 国产精品视频最多的网站| 欧美久久九九| 免费视频91蜜桃| 精品久久久久久无| 欧美啪啪网站| 乱人伦xxxx国语对白| 亚洲欧美在线视频观看| 欧美亚洲精品在线观看| 国产欧美一区二区| 亚洲少妇在线| 久久久精品视频免费观看| 亚洲新中文字幕| 影音先锋欧美激情| 一区二区在线免费看| 欧美日韩中文字幕在线视频| 大片免费在线观看| 日韩高清dvd|