Avatar billede kennethba Nybegynder
20. november 2001 - 22:45 Der er 10 kommentarer og
1 løsning

sluger mere og mere hukommelse...

Jeg har lavet en applikation som laver databasekald igennem en enkelt klasse.
I en tråd i en anden klasse laves disse databasekald igen og igen. Programmet sluger så mere og mere hukommelse og går til sidst ned pga. den ikke kan håndtere flere kald til databasen .???
Nogle som kan hjælpe.?
Avatar billede jakoba Nybegynder
20. november 2001 - 22:50 #1
Det hedder en memory leak og kommer af at du ikke sørger for at mulstille dine referencer til objekter der ikke bruges mere.

Det KAN være det er en af de java. klasser du bruger der ikke er ordentligt programmeres, men det er nok mest sandsynligt at det er en af dine egne.

mulstil dine referencer når du er færdig med dem.

mvh JakobA
Avatar billede kennethba Nybegynder
20. november 2001 - 22:51 #2
Jeg kan ikke nulstille mine statements, da mine resultSets så bliver til nullpointere .???
Avatar billede jakoba Nybegynder
20. november 2001 - 22:56 #3
Først når du er færdig med dem :-))
Avatar billede kennethba Nybegynder
20. november 2001 - 23:00 #4
Hvordan lukker jeg så de statements som bliver oprettet i den metode som returnerer det resultset som jeg bruger i en anden klasse .??
Avatar billede kennethba Nybegynder
20. november 2001 - 23:01 #5
Burde java ikke selv rydde op.?? (garbage collection .???)
Avatar billede jakoba Nybegynder
20. november 2001 - 23:01 #6
Og det behøver ikke være dine resultatSet der ikke bliver frigivet. Hver tråd du starer sluger en del memory. Kan det være du starter tråde i en langsom løkke istedet for blot den en du snakker om?

mvh JakobA
Avatar billede jakoba Nybegynder
20. november 2001 - 23:03 #7
Jo java rydder selv op, men den rydder ikke op i objekter du stadig har i en aktiv variabel. Dem ku det jo være du ønskede at bruge igen.
Avatar billede kennethba Nybegynder
20. november 2001 - 23:03 #8
Nope. Jeg kører kun en tråd, som så kører i en uendelig lykke. Den tråd laver en del databasekalde til en metode i en klasse. Denne metode laver et statement og udfører kaldet og returnere et resultset.
Kan det passe jeg skal lukke dette .???
Avatar billede logical Nybegynder
21. november 2001 - 08:09 #9
I den forbindelse er det sikkert mere smart at bruge et prepared statement, hvis det netop er det samme.

Ellers, hvis du opretter en ny statement hver gang, kan du evt kigge om du har en allokeret statement og lukke den inden du assigner en ny.
Avatar billede disky Nybegynder
21. november 2001 - 08:30 #10
Når du er færdig med dine resultSet, statement\'s og database connection\'s skal du ikke sætte dem lig med null, men først lave en .close(); på dem så kan du sætte dem til null.
Avatar billede disky Nybegynder
21. november 2001 - 08:43 #11
bare husk at .close() også
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester