引用计数

引用计数(英語:reference countingRC)是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象内存磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。

当创建一个对象的实例并在堆上申请内存时,对象的引用计数就为1,在其他对象中需要持有这个对象时,就需要把该对象的引用计数加1,需要释放一个对象时,就将该对象的引用计数减1,直至对象的引用计数为0,对象的内存会被立刻释放。

使用这种方式进行内存管理的语言:Objective-CPythonVala等。

优势与缺陷

跟踪式垃圾回收相比,引用计数的主要优点是可以尽快地回收不再被使用的对象,同时在回收过程中不会导致长时间的停顿,还可以清晰地标明每一个对象的生存周期。

实时应用或内存受限的系统中,实时响应能力是一项重要指标,而引用计数作为最容易实现的垃圾回收技术之一,很适合于这种情况。引用计数还可以用于管理其他非内存资源,如操作系统对象(经常比内存资源更稀缺)。跟踪式垃圾回收技术用终结器处理此类目标,但延迟回收可能引发其他问题。加权引用计数是适用于分布式系统的派生技术。

在可用内存被活跃对象填满的平台上,跟踪式垃圾回收会被频繁触发,从而降低性能。而引用计数即便在内存濒临耗尽的情况下性能依然有所保障。[1]引用计数还能为其他运行时优化技术提供参考信息,例如对于许多使用不可变对象的系统来说(如函数式编程语言),大量复制对象导致的性能惩罚有时十分严重;在此类系统上一个典型的优化措施是:假如一个对象被创建以后仅使用了一次,且在其不再被引用的同时另一个类似的对象被创建出来(如Javascript中的字符串拼接赋值操作),可以将删除原对象创建新对象的行为变为修改原对象,从而提高效率。引用计数可以为这类优化提供充分的参考信息。

未经优化的引用计数相比跟踪式垃圾回收有两个主要缺点,都需要引入附加机制予以修复:

  • 频繁更新引用计数会降低运行效率。
    • 对于Vala等在编译时进行引用计数的语言一般较少存在这一问题[2]
  • 原始的引用计数无法解决循环引用问题。

另外,如果使用空闲列表分配内存,那么引用计数的空间局域性非常差。仅使用引用计数无法通过移动对象来提高CPU缓存的性能,所以高性能的内存分配器都会同时实现一个跟踪式垃圾回收器以提高性能。许多引用计数实现(比如PHP和Objective-C)的性能不佳都是因为没有实现内存拷贝。[3]

Objective-C 范例

NSObject* obj = [[NSObject alloc] init];  //obj retain count is 1
obj = [obj1 retain];  //obj retain count is 2
[obj release];  //obj retain count is 1
[obj release];  //obj retain count is 0, obj was released

相关条目

参考资料

  1. ^ Wilson, Paul R. "Uniprocessor Garbage Collection Techniques". Proceedings of the International Workshop on Memory Management. London, UK: Springer-Verlag. pp. 1–42. ISBN 3-540-55940-X. Retrieved 5 December 2009. Section 2.1.
  2. ^ Projects/Vala/ReferenceHandling - GNOME Wiki!. wiki.gnome.org. [2022-10-07]. (原始内容存档于2022-05-05). 
  3. ^ Rifat Shahriyar, Stephen M. Blackburn, Xi Yang and Kathryn S. McKinley (2013). "Taking Off the Gloves with Reference Counting Immix". 24th ACM SIGPLAN conference on Object Oriented Programming Systems, Languages and Applications. OOPSLA 2013. doi:10.1145/2509136.2509527.

Read other articles:

Нотаріат Галичини та прилеглих територій — професійна спільнота осіб, які впродовж століть займались нотаріальною діяльністю на теренах Галичини та прилеглих територіях (сучасні Львівщина, Івано-Франківщина, Тернопільщина, Рівненщина, Волинь, Закарпаття) в статусі н

 

Tiga gunung api yang terdiri dari Tharsis Montes: Arsia Mons paling selatan; Pavonis Mons di tengah; Ascraeus Mons di utara. Gunung api keempat Tharsis, Olympus Mons, bertempat di barat laut, tidak diperlihatkan di gambar ini. Di sebelah kanan bawah ialah Noctis Labyrinthus, perpanjangan paling barat Valles Marineris. Image Courtesy NASA/JPL-Caltech Tharsis Montes adalah tempat tiga gunung berapi di daerah Tharsis, Mars. Di daerah ini terdapat gunung Ascraeus Mons, Pavonis Mons dan Arsia Mons...

 

Station of the Istanbul Metro Turgut ÖzalIstanbul Metro rapid transit stationGeneral informationCoordinates41°04′51″N 28°47′50″E / 41.080970°N 28.797242°E / 41.080970; 28.797242Owned byIstanbul Metropolitan MunicipalityLine(s) M3Platforms1 island platformTracks2Connections İETT Bus:[citation needed] 31Y, 78B, 78Ş, 82S, 98KM, 146K, 146M, MK31 Istanbul Minibus: Şirinevler-KayaşehirConstructionStructure typeUndergroundAccessibleYesHistoryOpened14 ...

Athletics at the 1955 SummerInternational UniversitySports WeekTrack events100 mmenwomen200 mmenwomen400 mmen800 mmen1500 mmen5000 mmen80 m hurdleswomen110 m hurdlesmen400 m hurdlesmen4×100 m relaymenwomen4×400 m relaymenMedley relaymenField eventsHigh jumpmenwomenPole vaultmenLong jumpmenwomenTriple jumpmenShot putmenwomenDiscus throwmenwomenHammer throwmenJavelin throwmenwomenCombined eventsPentathlonmenvte The men's 4 × 400 metres relay event at the 1955 International University Sports ...

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (مارس 2019) نوط الاستقلال العسكري - الشريط العسكري نوط الاستقلال العسكري هو نوط عسكري مصري أنشأ في 18 يوليو 1956 بمناسبة م...

 

هذه قائمة سفراء وممثلي ومندوبي منظمة التحرير الفلسطينية والسلطة الوطنية الفلسطينية (لاحقًا دولة فلسطين) لدى الدول والمنظمات والهيئات العالمية: السفراء حسب القارة آسيا الدولة المُضيفة الاسم صورة مستوى التمثيل تاريخ الاعتماد الدبلوماسي ملاحظات مراجع  الإمارات العربية ا

European real estate development firm JTREIndustryReal estate developmentFounded1996; 27 years ago (1996)Bratislava, Slovak RepublicFounderPeter KorbačkaHeadquartersBratislava, Slovak RepublicArea servedEuropeKey peoplePavel Pelikán (CEO)Total assets €953 375 000Number of employees300SubsidiariesJTRE LONDON, Ltd.Websitejtre.sk/en JTRE (J&T Real Estate) is a European real estate developer based in Bratislava, Slovakia.[1] The firm has completed over 50 project...

 

Football match2019 DFL-SupercupGerman SupercupMatch programme coverEventDFL-Supercup Borussia Dortmund Bayern Munich 2 0 Date3 August 2019 (2019-08-03)VenueSignal Iduna Park, DortmundMan of the MatchJadon Sancho (Borussia Dortmund)[1]RefereeDaniel Siebert (Berlin)[2]Attendance81,365[3]WeatherMostly cloudy20 °C (68 °F)64% humidity[4]← 2018 2020 → The 2019 DFL-Supercup was the tenth edition of the German super cup under the ...

 

Генеральний обозний відповідав за обоз і артилерією Війська. Генера́льний обо́зний — посада (уряд) і військове звання (чин) у Війську Запорозькому 17—18 століття. Особа, що посідала це чільну посаду була другою після гетьмана[1]. Представник генеральної старшини[1&...

Лінія 3Γραμμή 3 Афінський метрополітен Відкриття першої ділянки 28 січня 2000 Довжина, км 38 км[1] Кількість станцій 21 Час проїзду, хв 49 хв.[2] Максимальна кількість вагонів у складі поїзда 6[3] Кількість вагонів у складі поїзда 6 Інтервал руху в години пік 4 хв. Наземні...

 

Constituency of the Karnataka Legislative Assembly MudholConstituency for the Karnataka Legislative AssemblyConstituency detailsCountryIndiaRegionSouth IndiaStateKarnatakaDistrictBagalkotLS constituencyBagalkotReservationSCMember of Legislative Assembly16th Karnataka Legislative AssemblyIncumbent R. B. Timmapur PartyIndian National CongressElected year2023 Mudhol Assembly seat is one of 224 assembly constituencies in Karnataka State, in India.[1][2] It is part of Bagalkot (Lok...

 

Steel manufacturing company Republic Iron and Steel CompanyTypeSubsidiary Public (formerly)IndustrySteelFoundedYoungstown, Ohio, U.S. (1899)Canton, Ohio, U.S (2011 relaunch)SuccessorLTV Steel (later ISG and ArcelorMittal)HeadquartersCanton, Ohio, U.S (current)Cleveland, Ohio, U.S. (historical)ProductsSteelParentGrupo SimecWebsiterepublicsteel.com Molten iron is blown in an Eastern Bessemer converter to change it to steel for war essentials, 1941 Republic Steel is an American steel manufacture...

Brazilian mixed martial artist (born 1988) In this Portuguese name, the first or maternal family name is Lourenço and the second or paternal family name is Nunes. Amanda NunesCeremonial weigh ins - Amanda Nunes vs Julianna Peña UFC 269Born (1988-05-30) May 30, 1988 (age 35)Pojuca, Bahia, Brazil[1]Other names(The) Lioness[2][3]Height173 cm (5 ft 8 in)Weight61 kg (134 lb; 10 st)DivisionBantamweight (2011–2023) Featherweight (200...

 

Porto–Valença Strecke der Linha do MinhoStreckenlänge:134,2 kmSpurweite:1668 mm (Iberische Spur) Legende 0,0 Porto São Bento auch als Ramal do Porto bezeichnet Linha do Norte 2,6 Porto Campanhã IP1 Autobahn 5,1 Contumil Linha de Leixões 7,4 Rio Tinto IP4/A4 (Autobahn) 9,1 Águas Santas/Palmilheira Linha de Leixões 11,0 Ermesinde 11,0 Linha do Douro Leça 12,3 Travagem 14,4 Leandro 15,7 São Frutuoso 18,0 São Romão IP1/A3 (Autobahn) 21,0 Portela 23,4 Senhora das Dores Linha...

 

1969 film by Peter Yates John and MaryDirected byPeter YatesWritten byJohn MortimerMervyn Jones (novel)Produced byBen KadishStarringDustin HoffmanMia FarrowCinematographyGayne RescherEdited byFrank P. KellerMusic byQuincy JonesDistributed by20th Century FoxRelease dateDecember 14, 1969 (US)Running time92 minutesCountryUnited StatesLanguageEnglishBudget$3.5 million[1]Box office$4.1 million (US/ Canada rentals)[2][3][a] John and Mary is a 1969 American romantic d...

Southern African Bantu cultural group Nguni people AmaNguniTop right, Xhosa; Top Left, Ndebele; Bottom right, Zulu; Bottom left, SwatiTotal population31,618,000[1]LanguagesNguni languagesIsiXhosa, IsiZulu, Siswati, IsiNdebele[disambiguation needed]ReligionChristianity and African traditional religionsRelated ethnic groupsSotho-Tswana peoples, Tsonga people, Khoisan, San people and Ngoni people The Nguni people are a cultural group in southern Africa made up of Bantu ethnic gro...

 

2004 Hong Kong filmHeat TeamFilm posterTraditional Chinese重案黐孖GunSimplified Chinese重案黐孖GunHanyu PinyinZhòng Àn Chī Mā GunJyutpingCung2 Ngon3 Ci1 Maa1 Gun Directed byDante LamScreenplay byChan Hing-kaJohn ChanProduced byChan Hing-kaJimmy LawStarringAaron KwokEason ChanYumiko ChengNarrated byHorace WongEdited byCheung Ka-faiMusic byTommy WaiProductioncompaniesUniverse EntertainmentSil-Metropole OrganisationYouth Film Studio People's ProductionChina Film Co-Production Co...

 

هذه المقالة بحاجة لمراجعة خبير مختص في مجالها. يرجى من المختصين في مجالها مراجعتها وتطويرها. (يناير 2014) قذف مبكر معلومات عامة الاختصاص طب نفسي،  وعلم النفس  الإدارة حالات مشابهة مذي  تعديل مصدري - تعديل   القذف المبكر أو سرعة القذف (بالإنجليزية: Premature ejaculation)‏ هو مشك...

The Country Justice AuthorMichael DaltonOriginal titleThe Countrey Justice: Conteyning the Practise of the Justices of the Peace Out of Their Sessions, Gathered for the Better Helpe of Such Justices of Peace as Have Not Beene Much Conversant in the Studie of the Lawes of this RealmePublished1618 The Country Justice was written by Michael Dalton and first published in 1618. The subtext reads: Conteyning the Practise of the Justices of the Peace Out of Their Sessions, Gathered for the Bett...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (سبتمبر 2021) تجديد الحركة الاشتراكية الإفريقية تعديل مصدري - تعديل   تجديد الحركة الاشتراكية الأفريقية (بالفرنسية: Mouvement Socialiste Africain Renouveau)‏ هو حزب سياسي في تشاد. ويعتب...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!