it-swarm.com.de

java hat kein Speicherproblem mehr

Ich habe eine JAR-Datei, die auf einer Amazon-ec2-m1.large-Instanz mit Linux-64-Bit-Betriebssystem ausgeführt wird. Nach verschiedenen Stunden, normalerweise zwischen 2-4, ist der Speicher erschöpft, obwohl in meinem letzten Protokollprotokoll (vor die Fehlerdatei erstellt) Ich sehe Folgendes:

Memory - 
     totalHeapSize: 264 MB, 
     maxHeapSize: 1656 MB, 
     freeHeapSize: 220 MB

Wenn ich nach dem Start des Tellers sehe, bis der Speicher voll ist, sind alle Werte gleich und die freeHeapSize liegt zwischen 200 und 230 MB (ich überprüfe alle 30 Sekunden und mache System.gc ())

in der Datei hs_err_pid2250.log schreiben:

    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Cannot create GC thread. Out of system resources.
    # Possible reasons:
    #   The system is out of physical RAM or swap space
    #   In 32 bit mode, the process size limit was hit
    # Possible solutions:
    #   Reduce memory load on the system
    #   Increase physical memory or swap space
    #   Check if swap backing store is full
    #   Use 64 bit Java on a 64 bit OS
    #   Decrease Java heap size (-Xmx/-Xms)
    #   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 (gcTaskThread.cpp:46), pid=2250, tid=140227064182528
    #
    # JRE version: 7.0_25-b15
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.25-b01 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
    #

    ---------------  T H R E A D  ---------------

    Current thread (0x00007f8920007800):  JavaThread "Unknown thread" [_thread_in_vm, id=2251, stack(0x00007f8928493000,0x00007f8928594000)]

    Stack: [0x00007f8928493000,0x00007f8928594000],  sp=0x00007f89285925d0,  free space=1021k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    V  [libjvm.so+0x8a1d3a]  VMError::report_and_die()+0x2ea
    V  [libjvm.so+0x4071fb]  report_vm_out_of_memory(char const*, int, unsigned long, char const*)+0x9b
    V  [libjvm.so+0x4b3e2a]  GCTaskThread::GCTaskThread(GCTaskManager*, unsigned int, unsigned int)+0xfa
    V  [libjvm.so+0x4b2896]  GCTaskManager::initialize()+0x266
    V  [libjvm.so+0x75dc4f]  ParallelScavengeHeap::initialize()+0x6cf
    V  [libjvm.so+0x87a078]  Universe::initialize_heap()+0xb8
    V  [libjvm.so+0x87c7ed]  universe_init()+0x7d
    V  [libjvm.so+0x500315]  init_globals()+0x65
    V  [libjvm.so+0x863a62]  Threads::create_vm(JavaVMInitArgs*, bool*)+0x1e2
    V  [libjvm.so+0x55ff34]  JNI_CreateJavaVM+0x74
    C  [libjli.so+0x2f8e]  JavaMain+0x9e


    ---------------  P R O C E S S  ---------------

    Java Threads: ( => current thread )

    Other Threads:

    =>0x00007f8920007800 (exited) JavaThread "Unknown thread" [_thread_in_vm, id=2251, stack(0x00007f8928493000,0x00007f8928594000)]

    VM state:not at safepoint (not fully initialized)

    VM Mutex/Monitor currently owned by a thread: None

    GC Heap History (0 events):
    No events

    Deoptimization events (0 events):
    No events

    Internal exceptions (0 events):
    No events

    Events (0 events):
    No events


    Dynamic libraries:
    00400000-00401000 r-xp 00000000 ca:01 9384                               /usr/Java/jdk1.7.0_25/bin/Java
    00600000-00601000 rw-p 00000000 ca:01 9384                               /usr/Java/jdk1.7.0_25/bin/Java
    01f54000-01f75000 rw-p 00000000 00:00 0                                  [heap]
    86600000-87ac0000 rw-p 00000000 00:00 0 
    87ac0000-8b800000 rw-p 00000000 00:00 0 
    8b800000-905b0000 rw-p 00000000 00:00 0 
    905b0000-d92b0000 rw-p 00000000 00:00 0 
    d92b0000-db980000 rw-p 00000000 00:00 0 
    db980000-100000000 rw-p 00000000 00:00 0 
    7f891d000000-7f891d270000 rwxp 00000000 00:00 0 
    7f891d270000-7f8920022000 rw-p 00000000 00:00 0 
    7f8920022000-7f8924000000 ---p 00000000 00:00 0 
    7f8925555000-7f892574d000 rw-p 00000000 00:00 0 
    7f892574d000-7f892574e000 ---p 00000000 00:00 0 
    7f892574e000-7f892584e000 rw-p 00000000 00:00 0 
    7f892584e000-7f892584f000 ---p 00000000 00:00 0 
    7f892584f000-7f892595a000 rw-p 00000000 00:00 0                          [stack:2252]
    7f892595a000-7f8925978000 rw-p 00000000 00:00 0 
    7f8925978000-7f892599f000 rw-p 00000000 00:00 0 
    7f892599f000-7f8925be6000 rw-p 00000000 00:00 0 
    7f8925be6000-7f8925bf1000 rw-p 00000000 00:00 0 
    7f8925bf1000-7f8925c0f000 rw-p 00000000 00:00 0 
    7f8925c0f000-7f8925c36000 rw-p 00000000 00:00 0 
    7f8925c36000-7f8925e7c000 rw-p 00000000 00:00 0 
    7f8925e7c000-7f8925e90000 rw-p 00000000 00:00 0 
    7f8925e90000-7f8925fb3000 rw-p 00000000 00:00 0 
    7f8925fb3000-7f8925fb4000 rw-p 00000000 00:00 0 
    7f8925fb4000-7f8925fcf000 r-xp 00000000 ca:01 17790                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libzip.so
    7f8925fcf000-7f89261ce000 ---p 0001b000 ca:01 17790                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libzip.so
    7f89261ce000-7f89261cf000 rw-p 0001a000 ca:01 17790                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libzip.so
    7f89261cf000-7f89261db000 r-xp 00000000 ca:01 17544                      /lib64/libnss_files-2.12.so
    7f89261db000-7f89263da000 ---p 0000c000 ca:01 17544                      /lib64/libnss_files-2.12.so
    7f89263da000-7f89263db000 r--p 0000b000 ca:01 17544                      /lib64/libnss_files-2.12.so
    7f89263db000-7f89263dc000 rw-p 0000c000 ca:01 17544                      /lib64/libnss_files-2.12.so
    7f89263dc000-7f8926405000 r-xp 00000000 ca:01 17571                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libjava.so
    7f8926405000-7f8926605000 ---p 00029000 ca:01 17571                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libjava.so
    7f8926605000-7f8926607000 rw-p 00029000 ca:01 17571                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libjava.so
    7f8926607000-7f8926614000 r-xp 00000000 ca:01 17789                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libverify.so
    7f8926614000-7f8926813000 ---p 0000d000 ca:01 17789                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libverify.so
    7f8926813000-7f8926815000 rw-p 0000c000 ca:01 17789                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/libverify.so
    7f8926815000-7f892681c000 r-xp 00000000 ca:01 17559                      /lib64/librt-2.12.so
    7f892681c000-7f8926a1b000 ---p 00007000 ca:01 17559                      /lib64/librt-2.12.so
    7f8926a1b000-7f8926a1c000 r--p 00006000 ca:01 17559                      /lib64/librt-2.12.so
    7f8926a1c000-7f8926a1d000 rw-p 00007000 ca:01 17559                      /lib64/librt-2.12.so
    7f8926a1d000-7f8926a9f000 r-xp 00000000 ca:01 17537                      /lib64/libm-2.12.so
    7f8926a9f000-7f8926c9e000 ---p 00082000 ca:01 17537                      /lib64/libm-2.12.so
    7f8926c9e000-7f8926c9f000 r--p 00081000 ca:01 17537                      /lib64/libm-2.12.so
    7f8926c9f000-7f8926ca0000 rw-p 00082000 ca:01 17537                      /lib64/libm-2.12.so
    7f8926ca0000-7f89276e1000 r-xp 00000000 ca:01 17795                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/server/libjvm.so
    7f89276e1000-7f89278e1000 ---p 00a41000 ca:01 17795                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/server/libjvm.so
    7f89278e1000-7f8927984000 rw-p 00a41000 ca:01 17795                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/server/libjvm.so
    7f8927984000-7f89279c0000 rw-p 00000000 00:00 0 
    7f89279c0000-7f8927b41000 r-xp 00000000 ca:01 7616                       /lib64/libc-2.12.so
    7f8927b41000-7f8927d41000 ---p 00181000 ca:01 7616                       /lib64/libc-2.12.so
    7f8927d41000-7f8927d45000 r--p 00181000 ca:01 7616                       /lib64/libc-2.12.so
    7f8927d45000-7f8927d46000 rw-p 00185000 ca:01 7616                       /lib64/libc-2.12.so
    7f8927d46000-7f8927d4c000 rw-p 00000000 00:00 0 
    7f8927d4c000-7f8927d4e000 r-xp 00000000 ca:01 17535                      /lib64/libdl-2.12.so
    7f8927d4e000-7f8927f4e000 ---p 00002000 ca:01 17535                      /lib64/libdl-2.12.so
    7f8927f4e000-7f8927f4f000 r--p 00002000 ca:01 17535                      /lib64/libdl-2.12.so
    7f8927f4f000-7f8927f50000 rw-p 00003000 ca:01 17535                      /lib64/libdl-2.12.so
    7f8927f50000-7f8927f66000 r-xp 00000000 ca:01 16704                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/jli/libjli.so
    7f8927f66000-7f8928166000 ---p 00016000 ca:01 16704                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/jli/libjli.so
    7f8928166000-7f8928167000 rw-p 00016000 ca:01 16704                      /usr/Java/jdk1.7.0_25/jre/lib/AMD64/jli/libjli.so
    7f8928167000-7f892817e000 r-xp 00000000 ca:01 7640                       /lib64/libpthread-2.12.so
    7f892817e000-7f892837d000 ---p 00017000 ca:01 7640                       /lib64/libpthread-2.12.so
    7f892837d000-7f892837e000 r--p 00016000 ca:01 7640                       /lib64/libpthread-2.12.so
    7f892837e000-7f892837f000 rw-p 00017000 ca:01 7640                       /lib64/libpthread-2.12.so
    7f892837f000-7f8928383000 rw-p 00000000 00:00 0 
    7f8928383000-7f89283a1000 r-xp 00000000 ca:01 9381                       /lib64/ld-2.12.so
    7f89283cb000-7f89283d5000 rw-p 00000000 00:00 0 
    7f89283d5000-7f892848b000 rw-p 00000000 00:00 0 
    7f892848b000-7f8928493000 rw-s 00000000 ca:01 8174                       /tmp/hsperfdata_gurustrade/2250
    7f8928493000-7f8928496000 ---p 00000000 00:00 0 
    7f8928496000-7f8928598000 rw-p 00000000 00:00 0                          [stack:2251]
    7f892859b000-7f892859e000 rw-p 00000000 00:00 0 
    7f892859e000-7f892859f000 r--p 00000000 00:00 0 
    7f892859f000-7f89285a0000 rw-p 00000000 00:00 0 
    7f89285a0000-7f89285a1000 r--p 0001d000 ca:01 9381                       /lib64/ld-2.12.so
    7f89285a1000-7f89285a2000 rw-p 0001e000 ca:01 9381                       /lib64/ld-2.12.so
    7f89285a2000-7f89285a3000 rw-p 00000000 00:00 0 
    7fff64527000-7fff64548000 rw-p 00000000 00:00 0                          [stack]
    7fff645ff000-7fff64600000 r-xp 00000000 00:00 0                          [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

    VM Arguments:
    Java_command: /home/gurustrade/proj/versions/trunk/gt_engine/gt_engine.jar
    Launcher Type: Sun_STANDARD

    Environment Variables:
    PATH=/usr/bin:/bin
    Shell=/bin/sh

    Signal Handlers:
    SIGSEGV: [libjvm.so+0x8a26a0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGBUS: [libjvm.so+0x8a26a0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGFPE: [libjvm.so+0x73f3d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGPIPE: [libjvm.so+0x73f3d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGXFSZ: [libjvm.so+0x73f3d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGILL: [libjvm.so+0x73f3d0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004
    SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
    SIGUSR2: [libjvm.so+0x73ed20], sa_mask[0]=0x00000000, sa_flags=0x10000004
    SIGHUP: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
    SIGINT: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
    SIGTERM: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
    SIGQUIT: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000


    ---------------  S Y S T E M  ---------------

    OS:Linux
    uname:Linux 3.4.48-45.46.amzn1.x86_64 #1 SMP Wed Jun 12 02:04:44 UTC 2013 x86_64
    libc:glibc 2.12 NPTL 2.12 
    rlimit: STACK 8192k, CORE 0k, NPROC 1024, NOFILE 4096, AS infinity
    load average:1.01 1.04 1.10

    /proc/meminfo:
    MemTotal:        7633612 kB
    MemFree:         5784036 kB
    Buffers:          186424 kB
    Cached:          1025752 kB
    SwapCached:            0 kB
    Active:           980284 kB
    Inactive:         706036 kB
    Active(anon):     474096 kB
    Inactive(anon):      100 kB
    Active(file):     506188 kB
    Inactive(file):   705936 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:             0 kB
    SwapFree:              0 kB
    Dirty:                88 kB
    Writeback:             0 kB
    AnonPages:        474084 kB
    Mapped:            43752 kB
    Shmem:               156 kB
    Slab:             103892 kB
    SReclaimable:      84548 kB
    SUnreclaim:        19344 kB
    KernelStack:        9032 kB
    PageTables:        20180 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:     3816804 kB
    Committed_AS:    2130476 kB
    VmallocTotal:   34359738367 kB
    VmallocUsed:       23908 kB
    VmallocChunk:   34359714455 kB
    AnonHugePages:         0 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    DirectMap4k:     7872512 kB
    DirectMap2M:           0 kB


    CPU:total 2 (4 cores per cpu, 1 threads per core) family 6 model 23 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, tsc

    /proc/cpuinfo:
    processor   : 0
    vendor_id   : GenuineIntel
    cpu family  : 6
    model       : 23
    model name  : Intel(R) Xeon(R) CPU           E5430  @ 2.66GHz
    stepping    : 10
    microcode   : 0xa07
    cpu MHz     : 2660.000
    cache size  : 6144 KB
    fpu     : yes
    fpu_exception   : yes
    cpuid level : 13
    wp      : yes
    flags       : fpu tsc msr pae cx8 cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht pbe syscall nx lm constant_tsc Arch_perfmon pebs bts rep_good nopl pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm dtherm tpr_shadow vnmi flexpriority
    bogomips    : 5320.00
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 38 bits physical, 48 bits virtual
    power management:

    processor   : 1
    vendor_id   : GenuineIntel
    cpu family  : 6
    model       : 23
    model name  : Intel(R) Xeon(R) CPU           E5430  @ 2.66GHz
    stepping    : 10
    microcode   : 0xa07
    cpu MHz     : 2660.000
    cache size  : 6144 KB
    fpu     : yes
    fpu_exception   : yes
    cpuid level : 13
    wp      : yes
    flags       : fpu tsc msr pae cx8 cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht pbe syscall nx lm constant_tsc Arch_perfmon pebs bts rep_good nopl pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm dtherm tpr_shadow vnmi flexpriority
    bogomips    : 5320.00
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 38 bits physical, 48 bits virtual
    power management:



    Memory: 4k page, physical 7633612k(5784036k free), swap 0k(0k free)

    vm_info: Java HotSpot(TM) 64-Bit Server VM (23.25-b01) for linux-AMD64 JRE (1.7.0_25-b15),   built on Jun  5 2013 20:48:36 by "Java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)

    time: Mon Aug  5 16:11:16 2013
    elapsed time: 0 seconds

Außerdem verwende ich Threadpoolexecutor mit 30 Core-Threads und 100 Max. (Nie mehr als 30 Benutzer, obwohl ich manchmal alle 30 verwende).

Schließlich benutze ich bonecp Connection Pool mit 50 Verbindungen

Irgendwelche Vorschläge?:)

Nach dem Vorschlag habe ich einen Heap-Dump hinzugefügt, nachdem ich die Anwendung von meinem lokalen PC aus ausgeführt habe. Wie kann ich von hier fortfahren? Sind die kritischen orangefarbenen Sprünge wichtig? Oder nur die verwendeten wichtig? enter image description here

10
user502967

Ich konnte einen fast identischen Fehler beheben, indem ich die Ratschläge befolgte, die gegeben wurden von: 

https://confluence.csiro.au/pages/viewpage.action?pageId=278167841

Im Wesentlichen heißt es:

Beim Start der Java Virtual Machine werden standardmäßig mehrere Garbage Collection-Threads (GC-Threads) erzeugt, die für parallele GC-Vorgänge verwendet werden. Die Anzahl dieser Threads wird anhand der folgenden Formel berechnet: (ncpus <= 8)? ncpus: 3 + ((ncpus * 5)/8)… Durch die Erstellung dieser vielen Threads erreicht das Programm automatisch die Systemgrenze… 

Ich habe die Anzahl der Müllsammel-Threads mithilfe der Umgebungsvariablen wie folgt begrenzt:

export _Java_OPTIONS="-XX:ParallelGCThreads=2"

Sie sind sich nicht sicher, was die Gesamtleistung in Bezug auf GC betrifft, aber die Arbeit von heute ist zumindest erledigt.

Bitte überprüfen Sie den ursprünglichen Beitrag für weitere Optionen. 

Viel Glück, - Stu

8
Stu

Versuchen Sie es mit der 64-Bit-Version von Java, wenn Sie die 32-Bit-Version verwenden.

Fügen Sie außerdem das neue JVM-Argument "-XX: + CMSClassUnloadingEnabled" hinzu, das einige nicht verwendete Klassenobjekte löscht

1
jayalalk

Wenn Sie mehr physischen RAM zur Verfügung haben, verwenden Sie das. Es scheint, dass die zugewiesene Heap-Größe nur 1656 MB beträgt, was möglicherweise nicht ausreicht. Versuchen Sie, eine Java-JAR-Datei mit zwei Switches -xmx4096mb und -xms 2048 auszuführen. Überwachen Sie dann die Verwendung, möglicherweise den Speicherbedarf ist zu groß für Ihre Anwendung. Wenn Ihnen nach einiger Zeit immer noch nicht genügend Speicher zur Verfügung steht, müssen Sie weitere Nachforschungen anstellen, um zu überprüfen, ob Ihr Code Speicher verliert. Hoffen Sie, dass dies hilft. Lassen Sie mich wissen, ob Sie weitere Informationen benötigen 

1
drequinox

Heap ist nur ein Teil der Gleichung. Sehen Sie sich den gesamten residenten Speicher an. Er enthält Heap- und Off-Heap-Beiträge. Off-Heap umfasst zugeordnete JARs, Thread-Stacks (~ 1 MB pro Thread), permgen usw. usw. SO enthält eine Reihe von Fragen zur Vorgehensweise unter Linux.

0
duffymo

Ohne zu versuchen, die Speicherauszugsdaten zu entschlüsseln, werde ich feststellen, dass es im Wesentlichen drei Fälle gibt, in denen eine JVM über genügend Arbeitsspeicher verfügt:

  1. Eine Struktur (Liste von Listen oder Whatnot) haben, die Massen unbenutzter (aber immer noch referenzierter) Daten ansammeln darf.
  2. Verschiedene "Handles" lassen offene Handles, Threads und Datenbankoperationen. Insbesondere wenn Sie eine API mit einer nativen Komponente verwenden, können Sie möglicherweise viele Dinge außerhalb der Reichweite von GC lassen.
  3. Eine einzige extrem große Anforderung (oder einen "Burst" solcher Anforderungen).

Eine Art dazwischen wäre Klassen. Wenn Sie eine App ausführen, die Klassen dynamisch erstellt und lädt, müssen Sie einzelne Klassenladeprogramme verwenden, um die Klassen sammelbar zu machen.

0
Hot Licks

Gelöst mit dem neuesten jdk. Bitte installieren Sie Java-11-openjdk

0
Vibhuti Sawant