# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2863661056 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /neworiental/software/bootstrap/hs_err_pid17840.log
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006c0000000, 2863661056, 0) failed; error='Cannot allocate memory' (errno=12)
-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/xxx/software/bootstrap/
Memory: 4k page, physical 16260372k(425348k free), swap 4194300k(874708k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.172-b11) for linux-amd64 JRE (1.8.0_172-b11), built on Mar 28 2018 21:44:09 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
time: Sun Oct 9 00:28:39 2022
elapsed time: 0 seconds (0d 0h 0m 0s)
^C
[dontovertime@HYY-BMPP-P-sql96d40-09 bootstrap]$ tail -10000f hs_err_pid18191.log
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2863661056 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
# 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 (os_linux.cpp:2640), pid=18191, tid=0x00007f6c15c70700
#
# JRE version: (8.0_172-b11) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.172-b11 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 (0x00007f6c0c00a800): JavaThread "Unknown thread" [_thread_in_vm, id=18192, stack(0x00007f6c15b71000,0x00007f6c15c71000)]
Stack: [0x00007f6c15b71000,0x00007f6c15c71000], sp=0x00007f6c15c6d2b0, free space=1008k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xad221a] VMError::report_and_die()+0x2ba
V [libjvm.so+0x50185b] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b
V [libjvm.so+0x92fee3] os::Linux::commit_memory_impl(char*, unsigned long, bool)+0x123
V [libjvm.so+0x930109] os::pd_commit_memory(char*, unsigned long, unsigned long, bool)+0x29
V [libjvm.so+0x9273ca] os::commit_memory(char*, unsigned long, unsigned long, bool)+0x2a
V [libjvm.so+0x99d363] PSVirtualSpace::expand_by(unsigned long)+0x53
V [libjvm.so+0x98d477] PSOldGen::initialize(ReservedSpace, unsigned long, char const*, int)+0xb7
V [libjvm.so+0x2dbb8a] AdjoiningGenerations::AdjoiningGenerations(ReservedSpace, GenerationSizer*, unsigned long)+0x39a
V [libjvm.so+0x9514a6] ParallelScavengeHeap::initialize()+0x1d6
V [libjvm.so+0xa9a253] Universe::initialize_heap()+0xf3
V [libjvm.so+0xa9a7be] universe_init()+0x3e
V [libjvm.so+0x643de5] init_globals()+0x65
V [libjvm.so+0xa7ef7e] Threads::create_vm(JavaVMInitArgs*, bool*)+0x23e
V [libjvm.so+0x6d8b34] JNI_CreateJavaVM+0x74
C [libagentloader.so+0x1146d] JNI_CreateJavaVM+0x8ed
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
Other Threads:
=>0x00007f6c0c00a800 (exited) JavaThread "Unknown thread" [_thread_in_vm, id=18192, stack(0x00007f6c15b71000,0x00007f6c15c71000)]
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
Classes redefined (0 events):
No events
Internal exceptions (0 events):
No events
Events (0 events):
No events
--------------- S Y S T E M ---------------
OS:CentOS Linux release 7.7.1908 (Core)
uname:Linux 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64
libc:glibc 2.17 NPTL 2.17
rlimit: STACK 8192k, CORE 0k, NPROC 63433, NOFILE 102536, AS infinity
load average:3.00 3.58 2.35
/proc/meminfo:
MemTotal: 16260372 kB
MemFree: 425348 kB
MemAvailable: 367844 kB
Buffers: 0 kB
Cached: 235068 kB
SwapCached: 148856 kB
Active: 13576768 kB
Inactive: 1854056 kB
Active(anon): 13530096 kB
Inactive(anon): 1771152 kB
Active(file): 46672 kB
Inactive(file): 82904 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 4194300 kB
SwapFree: 874708 kB
Dirty: 488 kB
Writeback: 0 kB
AnonPages: 15048848 kB
Mapped: 49124 kB
Shmem: 105552 kB
Slab: 162980 kB
SReclaimable: 94124 kB
SUnreclaim: 68856 kB
KernelStack: 27168 kB
PageTables: 65984 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 12324484 kB
Committed_AS: 33627812 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 195136 kB
VmallocChunk: 34359326716 kB
HardwareCorrupted: 0 kB
AnonHugePages: 5726208 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 87936 kB
DirectMap2M: 5154816 kB
DirectMap1G: 13631488 kB
CPU:total 8 (initial active 8) (1 cores per cpu, 1 threads per core) family 6 model 79 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, aes, clmul, erms, 3dnowpref, tsc, tscinvbit
/proc/cpuinfo:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 2
siblings : 1
core id : 0
cpu cores : 1
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 4
siblings : 1
core id : 0
cpu cores : 1
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 6
siblings : 1
core id : 0
cpu cores : 1
apicid : 6
initial apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 4
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 8
siblings : 1
core id : 0
cpu cores : 1
apicid : 8
initial apicid : 8
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 5
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 10
siblings : 1
core id : 0
cpu cores : 1
apicid : 10
initial apicid : 10
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 6
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 12
siblings : 1
core id : 0
cpu cores : 1
apicid : 12
initial apicid : 12
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0xb00001b
cpu MHz : 2199.038
cache size : 30720 KB
physical id : 14
siblings : 1
core id : 0
cpu cores : 1
apicid : 14
initial apicid : 14
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm fsgsbase smep
bogomips : 4399.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
Memory: 4k page, physical 16260372k(425348k free), swap 4194300k(874708k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.172-b11) for linux-amd64 JRE (1.8.0_172-b11), built on Mar 28 2018 21:44:09 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
time: Sun Oct 9 00:28:39 2022
elapsed time: 0 seconds (0d 0h 0m 0s)
1
ShuA1 2022-10-09 11:15:13 +08:00
看上去就是 OOM 啊
|
2
OctopusGO 2022-10-09 11:21:40 +08:00
调整一下 jvm 每个线程的初始化的时候申请的空间大小再看看
|
3
OctopusGO 2022-10-09 11:24:36 +08:00
一般就是代码里面有执行慢的地方,然乎这个地方调用的多,线程太多 OOM 了
|
4
WindWarrior 2022-10-09 11:28:41 +08:00
看看如果是 4GB 的服务器 -Xmx 是不能开到 4GB 的 大概开到 70%~ 80%
|
5
facelezz 2022-10-09 11:35:22 +08:00
"Memory: 4k page, physical 16260372k(425348k free), swap 4194300k(874708k free)"
剩余 425M "Native memory allocation (mmap) failed to map 2863661056 bytes for committing reserved memory." 申请 2863M 这不是很明显 宿主机内存不够么 |
6
larisboy 2022-10-09 11:37:22 +08:00
要不调低程序的所需内存,要不给宿主机加资源
|
7
jiobanma OP @WindWarrior 服务器是 16g 的
@facelezz 但是服务器是 16g 的 发生这个原因的时候 重启了一下 但是重启前没有查看内存占用情况,现在 free -m 看的话 内存还剩 10 个 g |
8
chainsR 2022-10-09 11:57:36 +08:00 via iPhone
我最近有个项目也遇到过,java 8 是么,可以试试把这些都加上去,就好了 https://www.cnblogs.com/lovelyli/p/14955585.html
|
9
asiufasd 2022-10-09 12:03:40 +08:00 1
@jiobanma
"我加了 HeapDumpOnOutOfMemoryError 这个参数,如果是服务运行期间内存溢出,为什么没有产生 dump 文件。" 因为可能没有发生 OutOfMemoryError ,而是操作系统级别的内存不够用了,可以检查一下是否有别的应用占用了系统的资源 |
10
littlewing 2022-10-09 12:09:43 +08:00 1
HeapDumpOnOutOfMemoryError 产生 dump 文件的条件是你的程序被 JVM OOM 了,但你这个是被系统把 JVM OOM 了
|
11
Red998 2022-10-09 12:14:23 +08:00
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2863661056 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 # 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 (os_linux.cpp:2640), pid=18191, tid=0x00007f6c15c70700 # # JRE version: (8.0_172-b11) (build ) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.172-b11 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 Java 运行时环境没有足够的内存来继续。 # 本机内存分配 (mmap) 未能映射 2863661056 字节以提交保留内存。 # 可能的原因: # 系统的物理 RAM 或交换空间不足 # 在 32 位模式下,达到了进程大小限制 # 可能的解决方案: # 减少系统内存负载 # 增加物理内存或交换空间 # 检查交换后备存储是否已满 # 在 64 位操作系统上使用 64 位 Java # 减小 Java 堆大小 (-Xmx/-Xms) # 减少 Java 线程数 # 减少 Java 线程堆栈大小 (-Xss) # 使用 -XX:ReservedCodeCacheSize= 设置更大的代码缓存 |
12
Jooooooooo 2022-10-09 13:33:25 +08:00
就是内存不够了.
简单解决就是先把堆调大, 然后 dump 堆看看里面都是啥, 有没有可以优化的. |
13
jiobanma OP |
14
jiobanma OP @Jooooooooo 你的意思是继续加大-Xmx 吗? 现在已经是 4g 了,而且按照 9,10 楼大佬所说的,是服务器内存满了,我继续加大 jvm 的内存依然会出现这个问题的。并且现在没有产生出 dump 文件,所以才会疑惑是操作系统的问题还是代码的问题
|
15
lmshl 2022-10-09 13:57:12 +08:00
既然已经 dump heap 了,直接丢进 eclipse memory analyzer 看原因咯
|
17
MineDog 2022-10-09 14:05:30 +08:00 1
没 dump 的原因不是都写了么,"Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again"
|
18
wiix 2022-10-09 14:10:55 +08:00
线程堆栈占的内存和 Xmx 设置的堆内存是分开的,默认每个线程的开销大概是 1M 。是不是什么地方的线程数开太大了?
|
19
MineDog 2022-10-09 14:17:21 +08:00
还有就是用了 mmap 直接内存分配,是程序什么功能需要用到呢,这玩意也不是在堆里面分配的啊
|
20
cloud107202 2022-10-09 14:34:57 +08:00
程序运行在容器里么?有无设置容器内存 limit
|
21
jiobanma OP |
22
cloud107202 2022-10-09 14:59:09 +08:00
看样子就是泄露了,可能是托管堆内也可能是线程。找机会用 jmap 主动 dump 内存,最好是做好监控的前提下,在 process memory 跳涨后去 dump, 然后扔 https://visualvm.github.io/ 里分析
|
23
mengyxu 2022-10-09 15:26:22 +08:00
宿主级内存不够,调小 Xms 和 Xmx 参数,如果你程序真的需要分配这么多内存的话建议宿主机少跑点进程
|
24
urnoob 2022-10-09 17:20:24 +08:00
mmap 2G 内存,有可能是哪个库或者自己的代码加载大文件或者写文件如 log 。jvm 需要扩大 heap 不是用 mmap 。
jvm 设的内存太大了,导致可用堆外内存不足。 如果这个应用的 jvm 确实需要那么多,那 lz 就加内存。 剩下就是内存泄露问题。 |
25
imzcg2 2022-10-09 18:09:47 +08:00
Possible reasons:
# The system is out of physical RAM or swap space # In 32 bit mode, the process size limit was hit 看见这个了吗???? 你这分明是在 64 位主机上运行了 32 位的 jdk 啊! 赶紧回去在主机上运行 java --version 看是不是 32 位的 jdk,是就换 64 位 |
26
imzcg2 2022-10-09 18:12:37 +08:00
抱歉没看完,是 64 位的
|
27
chainsR 2022-10-09 20:35:48 +08:00 via iPhone
@jiobanma 不过 8 的垃圾回收确实得指定好,我的是跑着跑着把内存跑满了,把这些加上去后一切正常
|
28
LeegoYih 2022-10-10 00:26:26 +08:00
把初始堆内存大小和最大内存大小设置成一样的值,这样启动时内存不足报错就说明宿主机内存确实是不够,免得 JVM 后续再去申请内存时才暴露问题。
-Xms4g -Xmx4g |
29
nothingistrue 2022-10-10 10:11:26 +08:00
#
# There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 2863661056 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 # 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 (os_linux.cpp:2640), pid=18191, tid=0x00007f6c15c70700 # # JRE version: (8.0_172-b11) (build ) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.172-b11 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 这一段已经说明错误现象,可能的原因,和大致的解决方案了。 现象:JVM 向基本系统申请内存的时候失败了,2863661056 bytes 大概 356 MB 。 这里申请的不是 -Xms -Xmx 指定的 JVM 堆内存,而是 JVM 需要占用的其他内存,JVM 堆内存在 JVM 启动的时候就独占了,后面不会再申请。Java 实例化后的对象(实际上是对象的成员变量),方法运行期间的变量,这俩是放到 JVM 堆内存的。但是 Java 类定义本身(类结构、类当中方法的函数定义、类的静态变量这些),是放到额外内存中的。此外 JVM 本身也会占用内存。后两个内存是动态的,现在要申请的可能就是这俩内存,然后因超出物理机或者进程内存上限而失败了。 原因就两个:一,物理机内存,包括实际物理内存和交换区( Windows 下就是虚拟内存),都满了;二,32 位程序,单进程内存通常上限是 4G 。 |
30
nothingistrue 2022-10-10 10:20:38 +08:00
上面 JVM 堆内存描述有误,应该时:启动时只占用 -Xms 指定的大小,后面随需要扩大占用,直到 -Xmx 指定的大小。
|
31
yisier 2022-10-10 10:21:01 +08:00
加个定时任务,每隔一段时间查询一下线程总数,如果线程数越来越多,那就是内存泄露了
ThreadMXBean bean = ManagementFactory.getThreadMXBean(); log.info("线程总数为 = " + bean.getThreadCount()); |
32
jiobanma OP |
33
cloud107202 2022-10-10 15:08:44 +08:00
Java HotSpot(TM) 64-Bit Server VM warning: 已经说明是 64 位 JVM
32bit 那个提示是在 Possible reasons 这一段下面,只是个内置的 hint 不要搞偏方向 |
34
pierswu 2022-10-10 18:38:24 +08:00
5 楼、29 楼才是正解!(虽然 29 楼算错了 2863661056 bytes 是 1731 MB
就是你服务器的剩余内存不够了 |
35
pierswu 2022-10-10 18:39:12 +08:00
我也算错了 2863661056 bytes 是 2731 MB
|