Bearbeiten: - play ~run
um mein Projekt zu starten
wie man dieses Problem beseitigt, Mein Projekt befindet sich in der Testphase. täglich nach 5-6 Stunden hört es plötzlich auf und gibt den unteren Fehler. Was zu tun, um diesen Fehler zu entfernen? ich entwickle dieses projekt in scala 2.1 mit playframework 2.2
%Vor%Im Allgemeinen bedeutet dies, dass Sie Ihrer JVM nicht genug Speicher zur Verfügung gestellt haben oder dass Sie ein Speicherleck haben. Sehen Sie, wie Menschen solche Probleme angehen: Umgang mit "java.lang.OutOfMemoryError : PermGen space "error oder suchen Sie nach nicht spielspezifischen Fehlern:" java.lang.OutOfMemoryError: PermGen ".
Beim Betrachten Ihres Logs ist mir aufgefallen, dass Sie es wahrscheinlich von SBT oder einem anderen Build-Tool wie Maven ausführen ("Waiting for source changes ..."). Um SBT dabei zu helfen, Speicherlecks zu verhindern, können Sie diese Argumente beim Mittagessen hinzufügen:
%Vor% Beachten Sie die Befehlszeile zum Entladen der Klasse arg. Im Allgemeinen habe ich bemerkt, dass Apps, die in SBT laufen, immer noch Ressourcen verlieren, egal was du tust, aber in der Produktion passiert es nicht. Sie könnten versuchen, in einem gegabelten JVM-Modus zu laufen, um SBT zu helfen - sehen Sie zum Beispiel das Plugin SBT-Revolver . Wenn Sie wirklich wissen möchten, wie Ihre Anwendung Speicher verbraucht und Speicherlecks aufweist, führen Sie sie außerhalb eines Build-Tools aus, d. H. Sie stellen sie in einem Container wie Tomcat bereit oder führen ein JAR oder was auch immer aus. Sie können Tools wie jconsole
hinzufügen, um die Speichernutzung zu beobachten.
Ihr Code generiert viele Klassen. Klassen werden im PermGen-Bereich gespeichert und werden nie vor Version 8 von Garbage Collection gesammelt. Sie können Ihren PermGen-Speicherplatz mit der Option -XXMaxPermSize
erhöhen, wenn Sie die JVM ausführen, zum Beispiel:
Die Verwendung von -Xmx
oder -Xms
(Heap-Speicher) funktioniert nicht, da dies ein anderer Speicherplatz ist.
Sie können auch eine Java 8 JVM verwenden, da sie PermGen nicht mehr verwendet.
Sie können jconsole.exe verwenden, das Teil von JDK ist, um die Tendenz zu sehen, wie sich die PermGen-Größe erhöht. Möglicherweise erhöht es sich in bestimmten Zeitintervallen, so dass es einfacher für Sie zu debuggen ist. Versuchen Sie auch, die Größe von PermGen zu erhöhen: Erhöhen Sie den zulässigen Speicherplatz . Aber wenn das Problem in Code ist, wird es für eine lange Zeit nicht helfen ...
Tags und Links scala java memory memory-management playframework