Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM崩溃,错误=';无法分配内存';(errno=12)即使内存可用_Java - Fatal编程技术网

Java JVM崩溃,错误=';无法分配内存';(errno=12)即使内存可用

Java JVM崩溃,错误=';无法分配内存';(errno=12)即使内存可用,java,Java,我遇到JVM无法在Java中分配内存的问题 OpenJDK 64位服务器虚拟机警告:信息: os::提交_内存(0x0000000734880000,880279552,0)失败; 错误=“无法分配内存”(errno=12) 内存不足,Java运行时环境无法运行 继续。本机内存分配(mmap)映射880279552失败 用于提交保留内存的字节。包含更多信息的错误报告文件 信息另存为: /home/ec2 user/tools/apache/apache-tomcat-9.0.6/bin/hs_e

我遇到JVM无法在Java中分配内存的问题

OpenJDK 64位服务器虚拟机警告:信息: os::提交_内存(0x0000000734880000,880279552,0)失败; 错误=“无法分配内存”(errno=12)

内存不足,Java运行时环境无法运行 继续。本机内存分配(mmap)映射880279552失败 用于提交保留内存的字节。包含更多信息的错误报告文件 信息另存为: /home/ec2 user/tools/apache/apache-tomcat-9.0.6/bin/hs_err_pid23366.log java.lang.NullPointerException

这是我的记忆统计数据

MemTotal:        8166744 kB
MemFree:         3788780 kB
MemAvailable:    3861816 kB
Buffers:               0 kB
Cached:           286536 kB
SwapCached:            0 kB
Active:          4030520 kB
Inactive:         182596 kB
Active(anon):    3926808 kB
Inactive(anon):    24892 kB
Active(file):     103712 kB
Inactive(file):   157704 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               192 kB
Writeback:             0 kB
AnonPages:       3926652 kB
Mapped:            72652 kB
Shmem:             25120 kB
Slab:             100300 kB
SReclaimable:      60032 kB
SUnreclaim:        40268 kB
KernelStack:        5616 kB
PageTables:        21632 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4083372 kB
Committed_AS:    5723980 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      286720 kB
DirectMap2M:     8101888 kB
这似乎是一个重复的JVM堆外内存问题。最接近这个问题的是

然而不同之处在于,在链接线程中,用户的可用空间较少,JVM试图分配更高的内存(打开和关闭)

在我的例子中,JVM试图分配880279552个BTE(0.8 GB),而我的可用内存(上面)是3.7 GB。JVM虽然有将近4倍的可用内存,但却无法分配它,这是什么原因呢?一个附带问题:它为什么要分配0.8GB内存。这正常吗?有没有办法通过工具更深入地了解此类分配?有人能指出一个资源来更好地理解上面的内存统计信息吗

这是我在setenv.sh中的JVM配置(它是一台8GB RAM机器)

崩溃后,这里是最消耗内存的服务,在java消耗了3.1GB之后,MySQL使用了0.5GB(再次确认第一个内存统计屏幕截图,显示4GB内存可用)


非常感谢您对我的帮助。

@vlumi和其他人试图引导我走向“没有直接内存可用”的正确方向。尽管如此,我还开始遇到“堆外内存”、“内存不足”等其他问题

问题如下:在tomcat服务器上重新部署WAR后,现有线程没有被杀死,它们的引用仍然存在,因此GC无法清理它。最初的元空间(以前称为PermGen)有80MB,随着应用程序的运行,这个空间增加到125 MB。一旦重新部署,在返回80MB之前,VisualVM分析器上的元空间显示为170MB,在下一次重新部署中显示为210。这清楚地表明,在另外十几次重新部署(这是一个测试服务器)之后,JVM将耗尽用于分配的RAM空间,并抛出一个堆内存

为了解决这个问题,我们在Jenkins作业中添加了tomcat7:shutdown(或通过shell脚本重新启动)。停止和启动tomcat可以像以前一样默认回到元空间。其他一些人试图杀死jawa进程,以便杀死所有线程


谢谢大家的贡献。这是最有助于了解真实情况的网站的第一步

也许这有帮助:不,没有。您共享的线程仅解释xms和xmx。我之前遇到了一个堆问题,当时内存xmsxmx分别为1024和2048。这一次是2048年和4096年,比以前翻了一番!这里还有别的事情。潜在的问题是直接内存。将'-XX:MaxDirectMemorySize'作为选项是否有帮助?我还发现jmap和jstat是监视内存的有用工具usage@user2181576使用xmx,您将进程的可用堆内存限制为4GB,因此即使有更多的物理内存可用,它也不会使用更多内存。崩溃时,您的进程使用了多少内存?有接近堆极限的地方吗?谢谢vlumi。我的问题是,为什么Java不启动它的GC来满足我的需要,即获取上面图表分配给我堆的空闲内存?如果堆内存增加,它还可以清理旧的gen空间。
export CATALINA_HOME="/home/ec2-user/tools/apache/apache-tomcat-9.0.6/"
export JAVA_OPTS="-Xms2048m -Xmx4096m -DJDBC_CONNECTION_STRING=jdbc:mysql://localhost:3306/databasename?autoReconnect=true -DJDBC_DATABASER=dbname-DJDBC_USER=username-DJDBC_PASSWORD=password-DAPPLICATION_PRO$
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64"
  PID  PPID CMD                         %MEM %CPU
 4890     1 /usr/lib/jvm/java-1.8.0-ope 38.1  1.0
23204     1 /usr/sbin/mysqld --daemoniz  7.1  0.9
26056  3484 node /home/ec2-user/tools/j  1.3  111
 3548  3484 node /home/ec2-user/tools/j  1.1  0.3
 3484     1 PM2 v3.5.0: God Daemon (/ro  0.7  0.6
26067 26056 /root/.nvm/versions/node/v1  0.3  7.5
26074 26067 /root/.nvm/versions/node/v1  0.3  7.5
 3610  3548 /root/.nvm/versions/node/v1  0.3  0.0
 3624  3610 /root/.nvm/versions/node/v1  0.3  0.0