Fuga de memoria

Una fuga de memoria (más conocido por el término inglés memory leak) es un error de software que ocurre cuando un bloque de memoria reservada no es liberada en un programa de computación. Comúnmente ocurre porque se pierden todas las referencias a esa área de memoria antes de haberse liberado.

Dependiendo de la cantidad de memoria perdida y el tiempo que el programa siga en ejecución, este problema puede llevar al agotamiento de la memoria disponible en la computadora. Una pérdida de memoria puede provocar un aumento en el uso de la memoria, el tiempo de ejecución del rendimiento y puede afectar negativamente a la experiencia del usuario. [1]


Este problema se da principalmente en aquellos lenguajes de programación en los que el manejo de memoria es manual (C o C++ principalmente), y por lo tanto es el programador el que debe saber en qué momento exacto puede liberar la memoria. Otros lenguajes utilizan un recolector de basura o conteo de referencias que automáticamente efectúa esta liberación. Sin embargo todavía es posible la existencia de fugas en estos lenguajes si el programa acumula referencias a objetos, impidiendo así que el recolector llegue a considerarlos en desuso.

Existen varias formas de luchar contra este problema. Una forma es el uso de un recolector de basura incluso en el caso en el que este no sea parte estándar del lenguaje. El más conocido recolector de basura usado de esta manera es el Boehm-Demers-Weiser conservative garbage collector. Otras técnicas utilizadas son la adopción de esquemas de conteo de referencias o el uso de pools de memoria (técnica menos popular, utilizada en el servidor Apache y en el sistema de versiones Subversion).

También hay herramientas para "auscultar" un programa y detectar las fugas. Una de las herramientas más conocidas es Valgrind.

RAII

"Adquirir Recursos es Inicializar", a menudo referido por sus siglas en inglés RAII (de "Resource Acquisition Is Initialization"), es un popular patrón de diseño en varios lenguajes de programación orientados a objetos como C++, y Ada. RAII soluciona las fugas de memoria relacionando objetos con los recursos adquiridos, y automáticamente liberando los recursos cuando los objetos terminan su vida. A diferencia de la recolección de basura, RAII tiene las ventajas de: saber cuándo los objetos existen y saber cuándo no. Se puede comparar los siguientes ejemplos en C y C++:

/* Versión en C */
#include <stdlib.h>

void f(int n)
{
  int* array = calloc(n, sizeof(int));
  realizar_otras_operaciones();
  free(array);
}
// Versión en C++.
#include <vector>

void f(int n)
{
  std::vector<int> array (n);
  realizar_otras_operaciones();
}

La versión en C requiere que el desarrollador haga la liberación de memoria, a diferencia de la versión en C++. Esto evita la sobrecarga de los esquemas de la recolección de basura, e incluso puede ser aplicado a otros recursos como:

  • "Handles" a archivos, que la recolección de basura "mark-and-sweep" no maneja tan efectivamente.
  • Ventanas que han de ser cerradas.
  • Iconos en el área de notificación que han de ser ocultados.
  • Código de sincronización como monitores, secciones críticas, etc. que deben ser liberados para permitir que otros hilos de ejecución("threads") los obtengan.
  • "Handles" al registro de Windows que están abiertos.
  • Conexiones de red.
  • Objetos GDI de Windows.
  • Acciones a realizar cuando se termina una función (o bloque de código) en cualquier punto posible (la acción la realiza el destructor de un objeto creado cuando empieza la función).

Fugas de memoria en lenguajes con recolector de basura

Las fugas de memoria en lenguajes como JavaScript también son comunes, por ejemplo pueden ocurrir cuando hay referencias circulares entre los objetos. Por ejemplo un objeto ventana tiene una referencia a cada uno de sus controles (botones, imágenes, etc), a su vez cada control tiene una referencia a la ventana que lo contiene. Los recolectores de memoria que usan conteo de referencias pueden no darse cuenta de que una ventana ya no es usada porque sigue habiendo referencia a ella (de sus controles).

Estas fugas de memoria son muy comunes cuando se programa en forma despreocupada. Hay técnicas para evitarlas (por ejemplo eliminar alguna de las referencias para cortar el círculo).

En JavaScript ocurren también referencias circulares cuando se escriben funciones dentro de otras, porque cuando una función es escrita dentro de otra se mantiene una referencia a la que la incluye (para poder usar sus variables). El concepto de clausura explica estos comportamientos.

Véase también

Referencias

  1. Rudafshani, Masoomeh, and Paul A. S. Ward. “LeakSpot: Detection and Diagnosis of Memory Leaks in JavaScript Applications.” Software, practice & experience 47.1 (2017): 97–123. Web.

Read other articles:

Angel LocsinAngel Locsin di penayangan perdana Love Me Again in LA. (2008)LahirAngelica Locsin Colmenares23 April 1985 (umur 38)Santa Maria, Bulacan, FilipinaPekerjaanAktris, model, produser film, perancang fesyenTahun aktif2002–sekarangAgenGMA Artist Center (2002–2007) ABS-CBN Entertainment (2007–sekarang)Situs webhttp://www.angellocsin.com.ph Angelica Locsin Colmenares[1] (lahir 23 April 1985) adalah seorang aktris televisi dan film, model iklan dan perancang fesyen...

 

Cymodoceaceae Halodule wrightii Klasifikasi ilmiah Kerajaan: Plantae (tanpa takson): Angiospermae (tanpa takson): Monokotil Ordo: Alismatales Famili: CymodoceaceaeVines[1] Genera Amphibolis Cymodocea Halodule Syringodium Thalassodendron Cymodoceaceae adalah famili tumbuhan berbunga yang terkadang dikenal sebagai keluarga rumput manatee, yang hanya mencakup spesies laut.[2] Sistem klasifikasi APG IV memang mengenali Cymodoceaceae dan menempatkannya dalam ordo Alismatales, dala...

 

Buster KeatonLahirJoseph Frank KeatonPekerjaanAktorKomedianSutradaraProduser filmPenulis naskahPemeran penggantiTahun aktif1898–1966Suami/istriNatalie Talmadge ​ ​(m. 1921; c. 1932)​ Mae Scriven ​ ​(m. 1933; c. 1936)​ Eleanor Norris ​ ​(m. 1940; meninggal 1966)​AnakBuster Keaton Jr. Bob Talmadge Joseph Frank Keaton (Oktober 4, 1895 – Februar...

Études de médecine en France Certification du ministère de l'Enseignement supérieur garantissant son contrôle et l'authenticité du diplôme. Lieu France Établissement Université Direction Ministère de l'Enseignement Supérieur et de la santé, Sélection Diplômes ou concours requis Inscription de droit puis concours en fin de parcours accès santé spécifique (PASS) et la licence option accès santé (LAS). Niveau ougrade requis niveau 4 CEC Diplôme Durée de la formation 10 à 1...

 

Protected area in California Santa Rosa and San Jacinto Mountains National MonumentIUCN category III (natural monument or feature)LocationRiverside County, California, United StatesNearest cityPalm Springs, CA (San Jacinto Mountains), Palm Desert, CA (Santa Rosa Mountains)Coordinates33°48′N 116°42′W / 33.800°N 116.700°W / 33.800; -116.700Area280,071 acres (113,341 ha)[1]EstablishedOctober 24, 2000 (2000-10-24)Governing body...

 

Mormon podcast PodcastMormon Stories PodcastPresentationHosted byJohn Dehlin (primary host)GenreMormon studiesLDSsocial activismLatter-day Saint historyPublicationOriginal releaseSeptember 2005 (2005-09) Mormon Stories Podcast is a podcast principally hosted by psychologist John Dehlin featuring interviews with individuals and occasionally scholars on Mormon topics. The podcasts are noted as a platform for individuals critical of the Church of Jesus Christ of Latter-day Saints (LDS ...

Radio station in Reading, PennsylvaniaWRFY-FMReading, PennsylvaniaBroadcast areaBerks CountyFrequency102.5 MHz (HD Radio)BrandingY102ProgrammingLanguage(s)EnglishHD2: Spanish/EnglishFormatAdult contemporarySubchannelsHD2: Tropical music Rumba 92.3OwnershipOwneriHeartMedia, Inc.(iHM Licenses, LLC)Sister stationsWRAWHistoryFirst air dateSeptember 23, 1962Technical information[1]Licensing authorityFCCFacility ID69562ClassBERP10,000 watts (analog)400 watts (digital)[2]HAAT246 mete...

 

Radio station in Cincinnati, OhioWCKYCincinnati, OhioBroadcast areaCincinnati metropolitan areaFrequency1530 kHzBrandingCincinnati's ESPN 1530ProgrammingFormatSports radioAffiliationsESPN RadioCincinnati Bengals Radio NetworkFC CincinnatiUK Sports NetworkU of L Sports NetworkWestwood OneOwnershipOwneriHeartMedia(iHM Licenses, LLC)Sister stationsWEBN, WKFS, WKRC, WLW, WSAIHistoryFirst air dateSeptember 16, 1929; 94 years ago (1929-09-16)Former call signsWCKY (1929–1994)WSA...

 

Lateral view of three-vesicle and five-vesicle stages of the early human embryo. Brain vesicles are the bulge-like enlargements of the early development of the neural tube in vertebrates, which eventually give rise to the brain. Vesicle formation begins shortly after the rostral closure of the neural tube, at about embryonic day 9.0 in mice, or the fourth and fifth gestational week in humans.[1] In zebrafish and chicken embryos, brain vesicles form by about 24 hours and 48 hours post-...

Island in the river Seine, Paris, France Island of Paris redirects here. Not to be confused with Parris Island, South Carolina or Île-de-France. Île de la CitéÎle de la Cité, in the center of Paris (2014) Île de la Cité (2009) Île de la Cité (French: [il də la site]; English: City Island)[1] is an island in the river Seine in the center of Paris. In the 4th century, it was the site of the fortress of the Roman governor. In 508, Clovis I, the first King of the Franks,...

 

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Commonwealth of Independent States Agreement on Free Trade in Services, Establishment, Operations and Investment – news · newspapers · books · scholar · JSTOR (January 2024) (Learn how and when to remove this message) The Agreement on Free Trade in Services, Establishment, Operations and Investment (Russia...

 

此条目序言章节没有充分总结全文内容要点。 (2019年3月21日)请考虑扩充序言,清晰概述条目所有重點。请在条目的讨论页讨论此问题。 哈萨克斯坦總統哈薩克總統旗現任Қасым-Жомарт Кемелұлы Тоқаев卡瑟姆若马尔特·托卡耶夫自2019年3月20日在任任期7年首任努尔苏丹·纳扎尔巴耶夫设立1990年4月24日(哈薩克蘇維埃社會主義共和國總統) 哈萨克斯坦 哈萨克斯坦政府...

Defunct American Class I railroad This article is about the US railway. For other railways with the same name, see Great Northern Railway. Great Northern RailwayGN system map, c. 1918; dotted lines represent nearby railroads.The Empire Builder traveling through Glacier Park Montana. (1947)OverviewHeadquartersRailroad and Bank BuildingSaint Paul, MinnesotaFoundersJames J. HillJohn S. KennedyNorman KittsonDonald SmithGeorge StephenReporting markGNLocaleBritish ColumbiaCaliforniaIdahoIowaManitob...

 

Court system in Iran Islamic Revolutionary Court[1] (also Revolutionary Tribunal, Dadgahha-e Enqelab[2]) (Persian: دادگاه انقلاب اسلامی) is a special system of courts in the Islamic Republic of Iran designed to try those suspected of crimes such as smuggling, blaspheming, inciting violence, insulting the Supreme Leader, and attempting to overthrow the Islamic government. The court started its work after the 1979 Iranian Revolution.[3][4] Juris...

 

Untuk orang lain dengan nama yang sama, lihat Bob Ross (disambiguasi). Bob RossBerkas:Bob at Easel.jpgLahirRobert Norman Ross(1942-10-29)29 Oktober 1942Daytona Beach, Florida, ASMeninggal4 Juli 1995(1995-07-04) (umur 52)New Smyrna Beach, Florida, ASSebab meninggalLimfomaPekerjaanPelukis, instruktur seni, pemandu acara televisiSuami/istriLynda Brown (?–1981; bercerai)Jane Ross (1980s–1993; kematiannya)Anak3Karier militerPengabdian Amerika SerikatDinas/cabang Angkatan Ud...

American television personality and stunt performer (1977–2011) For the basketball player, see Ryan Dunn (basketball). Ryan DunnDunn at the Jackass 3D London premiere in November 2010BornRyan Matthew Dunn(1977-06-11)June 11, 1977Medina, Ohio, U.S.DiedJune 20, 2011(2011-06-20) (aged 34)West Goshen Township, Pennsylvania, U.S.Cause of deathCar accidentResting placeHighland Drive Cemetery, Brecksville, Ohio, U.S.Other namesRandom HeroPrima DunnaPlugsEducationWest Chester East Hi...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: List of Hindi films of 1934 – news · newspapers · books · scholar · JSTOR (October 2018) (Learn how and when to remove this message) Hindi cinema 1920s 1920 1921 1922 1923 19241925 1926 1927 1928 1929 1930s 1930 1931 1932 1933 19341935 1936 1937 1938 1939 1940...

 

541 ДебораВідкриттяВідкривачМакс ВольфМісце відкриттяОбсерваторія Гейдельберг-КеніґштульДата відкриття4 серпня 1904ПозначенняПозначення541 DeborahНазвана на честьДевораТимчасові позначення1904 OO, 1957 WU1Категорія малої планетиАстероїд головного поясуОрбітальні характ�...

بطولة كاريوكا 1916 تفاصيل الموسم بطولة كاريوكا  البلد البرازيل  البطل نادي أمريكا لكرة القدم  مباريات ملعوبة 42   عدد المشاركين 7   أهداف مسجلة 157   بطولة كاريوكا 1915  بطولة كاريوكا 1917  تعديل مصدري - تعديل   بطولة كاريوكا 1916 هو موسم من بطولة كاريوكا. كان عدد �...

 

非洲主要語系地圖,圖中顏色如下:   亞非語系   尼羅-撒哈拉語系   尼日-剛果語系      班圖語支   科依桑語系   印歐語系   南島語系 非洲語言主要分為五個語系: 亞非語系(又稱闪含语系)(包含240多種语言,2.85亿人使用,分布在北非、西非和非洲之角) 尼羅-撒哈拉语系(有爭議的語系類別)(包含100多種...