Seit einiger Zeit bekomme ich Performance-Probleme mit meiner Java-Anwendung, ich habe JavaMelody für das Profiling verwendet und das Ungewöhnliche ist der "Used Memory" Graph. Es hat viele kurze Spikes, die ~ 8GB Zeile wirklich schnell erreichen und dann, wie ich verstehe, GC räumt den Speicher auf. Hat jemand die Erfahrung zu verfolgen, was diese Spikes bedeuten? Es scheint, als ob sie auf ein bestimmtes Problem hinweisen.Java: Häufige Spikes im "used memory" Graph
GC und JVM konfiguriert sind, als: -XX: PermSize = 384m -XX: MaxPermSize = 512m -XX: + UseCompressedOops -XX: + UseFastAccessorMethods -XX: + CMSClassUnloadingEnabled -XX: + UseParNewGC -XX: -UseParallelOldGC -XX: -UseAdaptiveSizePolicy -XX: SurvivorRatio = 128 -XX: NewSize = 4055m -XX: MaxNewSize = 4055m -XX: + UseConcMarkSweepGC -XX: CMSInitiatingOccupancyFraction = 60 -XX: + UseCMSInitiatingOccupancyOnly -Xms12888 m -Xmx12888m -Dsun.rmi.dgc.client.gcInterval = 1800000 -Dsun.rmi.dgc.server.gcInterval = 1800000
Der Graph ist (Grün ist "bedeuten", Blau ist "Maximum") : Memory graph - 16:00 - 8:00 system without load, 8:00+ - system is under load
Bis 8:00 gab es keine Last am System.
Nach 08.00 Uhr unter Last ist, aber nicht sehr groß ein (~ 20 simultanious Operationen)
Tatsächlich gab es ein Leck und zu viele Objekte wurden erstellt. SurvivorRatio war auch zu hoch. Vielen Dank! – Immortal