11. december 2009 - 23:58Der er
4 kommentarer og 1 løsning
LinkedList og try/catch
Godaften derude. Jeg er ikke helt sikker paa hvorfor foelgende stykke kode ikke fanger min java.lang.OutOfMemoryError - specielt naar den bliver fanget hvis jeg bruger en ArrayList. Nogen der kan forklare hvad jeg ikke forstaar ?
import java.util.*; public class Main {
public static void main(String[] args) { List<Integer> liste = new LinkedList<Integer>();
Måske fordi der ikke er mere plads tilbage, og derfor ikke plads til at udføre koden i din catch.
En OutOfMemory er problematisk at håndtere, netop fordi der jo ikke er plads ... siger sig selv ... ikke?
Med en arraylist vil du typisk allokere store klumper, og når der så ikke er mere plads til en stor klump, er der måske en næsten stor klump RAM tilbage - nok til at håndtere dine udskrifter.
En linkedlist allokerer hele tiden små klumper (et element i listen), og når der så ikke er plads til en lille klump, er der måske heller ikke plads til dine udskrifter.
OOM fejl er kendte for at vaere meget svaere at haandtere. JVM'en er i store problemer naar det sker. Saa jeg er ikke overrasket over at der er uforudsigelige resultater.
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.