cl0udt
Lt. Junior Grade
- Registriert
- Sep. 2008
- Beiträge
- 508
JAVA - OutOfMemoryError bei statischer Methode und ArrayList
Hi Leute,
ich möchte aus einer statischen Methode heraus eine andere statische Methode aufrufen (insert), die mir ein Objekt in eine schon bestehende (objList) einsortiert, die auch statisch ist.
Leider bekomme ich schon bei einer Liste mit mehr als 10 Elementen einen java.lang.outofmemoryerror: Java heap space.
Mit unter 10 Elementen geht es. Vorher hab ich einfach mit Collections.sort gearbeitet, damit ging es, aber ich wollte die performance erhöhen, falls ich einen Array mit extrem vielen elementen habe. Dachte anstatt sort zu benutzen (java benutzt dabei mergesort), wäre meine methode schneller, indem ich einfach nur einsortiere. Die Elemente sind zu Beginn komplett sortiert, einmal ganz zu beginn benutze ich Collections.sort!
Was mach ich falsch?
Hi Leute,
ich möchte aus einer statischen Methode heraus eine andere statische Methode aufrufen (insert), die mir ein Objekt in eine schon bestehende (objList) einsortiert, die auch statisch ist.
Leider bekomme ich schon bei einer Liste mit mehr als 10 Elementen einen java.lang.outofmemoryerror: Java heap space.
Mit unter 10 Elementen geht es. Vorher hab ich einfach mit Collections.sort gearbeitet, damit ging es, aber ich wollte die performance erhöhen, falls ich einen Array mit extrem vielen elementen habe. Dachte anstatt sort zu benutzen (java benutzt dabei mergesort), wäre meine methode schneller, indem ich einfach nur einsortiere. Die Elemente sind zu Beginn komplett sortiert, einmal ganz zu beginn benutze ich Collections.sort!
Was mach ich falsch?
Code:
public static ArrayList<Object> ObjList;
public static blabla(){
Collections.sort(ObjList);
while(bla){
//macht irgendwas, wird mind. ObjList.size() / 2 Mal aufgerufen
insertObj(obj)
}
}
public static void insertObj(Object obj){
boolean added = false;
if (ObjList.size() < 1){
Obj.add(obj);
}
else {
for (int x = 0; x < ObjList.size(); x++){
if (Obj.getOccurence() < ObjList.get(x).getOccurence()){
ObjList.add(x, Obj);
added = true;
}
}
if (!added) ObjList.add(Obj);
}
}
Zuletzt bearbeitet: