OSGi ClassLoader leaks

MZ3291

Aktives Mitglied
Hallo,

Ich bekomme andauernd folgenden Fehler, wenn ich mit meinem Eclipse Plugin rumspiele:

Java:
java.lang.OutOfMemoryError: PermGen space

Ich habe das ganze gründlich durchgegoogelt und bin zu der Überzeugung gekommen, dass es mit ClassLoadern zusammenhängt. Jegliche Lösungsansätze, die zu finden sind, gehen aber von der Annahme aus, dass der Fehler beim deploy/ undeploy von Applikationen auf einen Server auftreten.

Wie kann ich sowas also verhindern? Irgendwelche Ideen?

Grüße
MZ
 
M

maki

Gast
Mach den permGen größer.

"Broken by Design", die Trennung zwischen Eden, Permgenspace etc. pp. sollte eigentlich mit Java 8 aufgehoben werden AFAIK.

Wie groß ist denn dein PermGenSpace?
 

MZ3291

Aktives Mitglied
Das hab ich auch versucht ..
ich hab mich vorsichtig rangetastet, aber auch mit -XX:MaxPermSize=512M hatte ich immer noch die gleichen Probleme. (Zum Verständnis: Die Zeile habe ich in meine eclipse.ini eingefügt)

Ist die Zeile falsch oder der Ort ? oder Das "Max"PermSize?

Ich hab echt keine Ahnung..
512 erscheint mir allerdings schon etwas viel, da das Plugin nicht wirklich groß ist .. darum würde ich trotzdem gerne wissen, ob ich auch die Ursache des Problems beheben kann.
 

MZ3291

Aktives Mitglied
Außerdem habe ich mich umgeschaut und ein Eclipse Plugin zum Analysieren des Memory's gefunden, welcher mir folgendes sagt:

One instance of "org.eclipse.core.internal.registry.RegistryObjectManager" loaded by "org.eclipse.equinox.registry" occupies 5.449.760 (12,26%) bytes. The memory is accumulated in one instance of "org.eclipse.core.internal.registry.ReferenceMap$IEntry[]" loaded by "org.eclipse.equinox.registry".

Das scheint mir ziemlich viel und unnötig.. wie kann ich sowas vermeiden ?
 
Zuletzt bearbeitet:
M

maki

Gast
Wenn du nur eine RCP App hast, dann liegt es wohl an etwas anderem.

Du stoppst deine App schon öfters, oder?

Was genau machst du denn wenn du schreibst "rumspielen"?
 

MZ3291

Aktives Mitglied
Naja ich erweiter ich den Content Assist für Java und Jsp Editoren.. keine große Sache .. (dh nichts, das viele Klassen erfordert)
und um einen OutOfMemoryError zu kriegen, reihct meistens einfach nur eine Klasse öffnen zu wollen oder eine zu erstellen..

Wenn ich da rumprobiere dauert das keine Minute ..
 
Zuletzt bearbeitet:
M

maki

Gast
Wie sehen denn deine anderen Werte in der eclipse.ini aus?

Sinnvolle PermGenSpace Werte hängen auch von der der Heap Größe (Min/Max) ab.
 

MZ3291

Aktives Mitglied
also meine derzeitige datei sieht so aus:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120912-140910
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms40m
-Xmx512m

denke mal was du meinst ist "launcher.XXMaxPermSize 256m"
 
M

maki

Gast
Hi,

die Werte sehen normal aus.

Irgendwie ist da was komisch, kenne den PermGenSpace Error auch nur von Servern, ist deine Eclipse Installation versaut?
 
G

Gast2

Gast
Naja ich erweiter ich den Content Assist für Java und Jsp Editoren.. keine große Sache .. (dh nichts, das viele Klassen erfordert)
und um einen OutOfMemoryError zu kriegen, reihct meistens einfach nur eine Klasse öffnen zu wollen oder eine zu erstellen..

Wenn ich da rumprobiere dauert das keine Minute ..

Vielleicht wird der ContentAssist auch zu oft augerufen (deine eigenen Proposal) und zuviele Objekte erzeugt.
 

MZ3291

Aktives Mitglied
Das ist zwar keine schlechte Idee SirWayne, allerdings reicht es schon, wenn ich mein Plugin als Eclipse Application starte, dann eine Klasse öffne (bir heirhin alles in Ordnung) und dann den Workspace wieder schließen will/ Content Assist aufrufe .. ganz egal..

Es scheint fast so als wäre es nicht in der Lage 2 Aktionen durchzuführen, unabhängig davon ob ich Content Assist aufrufe oder nicht.

Kann gut sein, dass die Installation vermurkst ist, maki. also neu installieren?
 

MZ3291

Aktives Mitglied
Ok, hab die Lösung -.- sowas ärgerliches.. Ihr hattet eigentlich die ganze Zeit Recht: Das Problem war, dass zu wenig Permsize angegeben war.. Mein Fehler war, MaxPermsize in der eclipse.ini anzugeben..

Da ich das Plugin als Eclipse Application starte, scheint sich der, in der eclipse.ini angegebene Wert nur auf den Eclipse Workbench(?) zu beziehen, in dem ich entwickle und nicht auf den Test Workbench, in dem ich das Plugin ausführe..

-XX:MaxPermSize=512M in den Run Configurations als Argument hinzuzufügen, hat das Problem gelöst.
Vielen Dank für die Hilfe
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
rgubler Plugin mit eigenem ClassLoader Plattformprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben