15. november 2001 - 09:28Der er
10 kommentarer og 1 løsning
Memory-leak
Hvad kan være skyld i et memory leak? Jeg har et program, som efter tilpas længe kørsel begynder at lække :-/
Jeg har været programmet efter med en lup, og sat alle objekter til null efterhånden som de blev undværlige. Det hjalp ikke. Jeg har lavet en klasse, hvis eneste opgave er at kalde System.gc();, når hukommelsesniveauet bliver kritisk (<25% fri). Hjalp ikke.
Kan problemet skyldes andet end objekter, der ikke sættes til null? Nogle forslag til, hvordan jeg finder ud af, præcist hvor programmet slår læk? Er der programmer (helst freeware), der er velegnede til dette?
Det er desværre let at lave memory leaks, typisk ved at man glemmer at der ofte er mere end en reference til et objekt. Hvis du finder ud af noget må du meget gerne skrive det her.
Hehe ... ja - det har jeg også overvejet. Ulempen ved at have 1100 linjers kode i en enkelt klasse, et fundament, der overhovedet ikke er designet og en databas der, alene ved at kigge på tabelnavnene, kan konstateres at have syv brud på første normalform.
Udtrykket \"til pis!\" dækker meget godt min reaktion, da den memoryleak dukkede op.
Jeg tror, jeg har fået ram på lækket - men jeg er ikke sikker endnu (et enkelt gennemløb tager på den forkerte side af en time). Tilsyneladende har det hjulpet, at jeg har indført en dø() kommando i eet af mine databærende objekter.
Objektet har 6 eller 7 arrays, som tilsyneladende ikke bliver ryddet af gc. dø() sætter alle klassens globale variabler til null, og kaldes lige inden selve objektet bliver sat til null.
Jeg læste lige ordet database et eller andet sted.
Jeg har tidligere set en leak i oracle driver, men ellers vil jeg anbefale dig at huske at close resultset, statements og connections efter brug.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.