Native memory allocation (mmap) nicht anzeigen
Habe ich angefangen die Verkleidung Native memory allocation Problem. Ich denke, könnte im Zusammenhang mit den -Xmx und -Xms-Einstellungen. Was ist der empfohlene Weg, um diese Werte ?
Derzeit habe ich: -Xmx13G -Xms6G
Ich gelesen habe, wird empfohlen, gleiche Werte, aber ohne Erklärung, warum.
Den Fehler bin ich immer :
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 746061824 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2627), pid=13528, tid=0x00007f2b0b5f5700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_101-b13) (build 1.8.0_101-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.101-b13 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
/proc/meminfo:
MemTotal: 16433112 kB
MemFree: 166336 kB
Buffers: 114324 kB
Cached: 398396 kB
SwapCached: 0 kB
Active: 15151496 kB
Inactive: 254348 kB
Active(anon): 14893020 kB
Inactive(anon): 604 kB
Active(file): 258476 kB
Inactive(file): 253744 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 14892976 kB
Mapped: 24024 kB
Shmem: 696 kB
Slab: 349384 kB
SReclaimable: 187700 kB
SUnreclaim: 161684 kB
KernelStack: 43520 kB
PageTables: 276768 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 8216556 kB
Committed_AS: 33089080 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 31404 kB
VmallocChunk: 34359652884 kB
HardwareCorrupted: 0 kB
AnonHugePages: 13486080 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 28672 kB
DirectMap2M: 16879616 kB
Memory: 4k page, physical 16433112k(166336k free), swap 0k(0k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.101-b13) for linux-amd64 JRE (1.8.0_101-b13), built on Jun 22 2016 02:59:44 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
Irgendein besonderer Grund müssen Sie mit so viel Speicher? Vielleicht Zeit zu überlegen, tauschen Teile aus, die derzeit nicht im Einsatz auf der Festplatte
Hallo, vielen Dank, wir haben eine in-memory-cache (Frühjahr), wir begrenzen die Menge der Objekte und clearing bis zur gewissen Grenze, aber immer noch Speicher wächst weiter. Ich analize mit einem dump zu sehen, was Los ist denke ich.Dank
Wenn Sie
Hallo, vielen Dank, wir haben eine in-memory-cache (Frühjahr), wir begrenzen die Menge der Objekte und clearing bis zur gewissen Grenze, aber immer noch Speicher wächst weiter. Ich analize mit einem dump zu sehen, was Los ist denke ich.Dank
Wenn Sie
-Xmx
und -Xms
auf den gleichen Wert haben, werden Sie wissen von Anfang an, wenn die Java-hat genug Speicher zum ausführen von auf und Sie nicht verschwenden Zeit auf den ausbau der Speicher für den Java-Prozess.
InformationsquelleAutor Juan Cesar Villalba | 2018-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie klar zu Fragen, für viel mehr als physisch verfügbar ist auf Ihrem system. Sie haben 16 GB insgesamt, aber es ist 90% in Verwendung, und Sie haben keine swap-space, es gibt also keine Möglichkeit, Sie bekommen
-Xms6G
geschweige denn mehr (-Xmx13G
).Müssen Sie herausfinden, was andere Prozesse verbrauchen Speicher verwenden, zum Beispiel
top
und Sortieren von Residenten Speicher (upper-case-BriefO
, dannq
), und stoppen Sie genug von Ihnen, um kostenlos bis mindestens 6GB, bevor Sie in der JVM ausgeführt.Dass, oder verdoppeln Sie Ihre physischen Speicher auf 32GB, oder fügen 16GB tauschen (aber könnte dazu führen, Tracht Prügel, wenn das system stark ausgelastet ist).
Hat man sich anschaut, was ist mit Speicher mit
top
, wie ich vermutete? Ist die Spring Cache einen separaten Prozess? Können Sie begrenzen die Spring Cache-Speicher-Nutzung auf eine bestimmte Größe (in bytes, nicht Anzahl der Objekte)?SpringCache ist der gleiche Prozess , der cache-Implementierung verwenden wir (Guave), nicht den Weg angeben, um die Größe zu begrenzen. In Bezug auf oben, ich habe verwenden und die unten ist die Ausgabe: <br/>
PID USER PR NI VIRT RES SHR S %CPU %MEM 5491 xxx 20 0 13.969g 0.010t 14992 S 0.3 68.4
InformationsquelleAutor Jim Garrison
Jim Garrison eine gute Antwort auf die Frage, warum op ist immer das Problem.
Ich würde gerne Adresse eine sekundäre Frage des op:
Grundsätzlich der JVM zugewiesen werden, was Sie in
-Xms
sobald die JVM gestartet wird, dann wachsen als erforderlich, um-Xmx
einmal erreicht ist, es geht Müll sammeln (Spülung Dinge nicht mehr verwendet).Läuft GC auf viele Objekte (hier 7 GB im Wert von Objekten) ist es nicht eine gute Idee, denn es wird eine Zeit dauern und viele Ressourcen. Einstellung Sie zu dem gleichen Wert in Ordnung ist, als GC ist, die entlang der Weise. GC-Operationen "stop-the-world", wo nichts anderes ausführen können, während Müll gesammelt. Jetzt stellen Sie sich die Reinigung bis 7Gb Müll, das wird eine nicht unerhebliche Menge an Zeit und verursachen lange Pausen.
Sollten Sie wirklich Lesen https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/introduction.html
-Xmx
, verursacht eine Menge von Objekten gereinigt werden. Ich bin mir nicht sicher, ob dies korrekt ist. Ich denke, dass die GC nicht warten, bis die-Xmx
und läuft vor.Haben Sie eine Quelle für das, was Sie behaupten ? AFAIK, eine volle GC wird durchgeführt, wenn
Xmx
erreicht ist. Das ist der Grund, warum Oracle empfiehlt setXms
undXmx
auf den gleichen Wert.InformationsquelleAutor thecarpy
InformationsquelleAutor Vishrant