gpt4 book ai didi

java - 为什么我在 Linux 虚拟机上遇到内存不足错误,但在正常的 Windows 10 上却可以正常工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:50 26 4
gpt4 key购买 nike

我的命令行 java 程序在具有双核 CPU 并分配了 1GB RAM 的 Windows 10 工作站上运行时可以正常工作。

但是,当我在具有 4 个 vCPU、12GB RAM 的 Ubuntu 虚拟机上运行它时,它遇到内存不足错误。

两者都使用 -Xms 和 -Xmx 运行,相应地设置为相同的值。

这是一个奇怪的错误。

更新:1)我不能分享代码,也不想显得傲慢或其他什么,但我认为代码没有任何问题。

2)错误如下:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 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:2627), pid=22403, tid=0x00007f52f9f2c700
#
# 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
#

顺便说一句,我的虚拟机的最大内存是12GB,我使用了-Xms12160m -Xmx12160m。至于我的工作站,我的最大内存是 2GB,但我使用了 -Xms1024m -Xmx1024m

最佳答案

因此,在我看来,在 Linux 系统上,您要求它保留完整的 12 MB 作为初始堆大小;这并不实际,因为它显然需要内存来存储其他东西(代码、操作系统等)。

从 SO 的其他问题中可以看出,最小值的默认值类似于物理 RAM 的 1/64。

关于java - 为什么我在 Linux 虚拟机上遇到内存不足错误,但在正常的 Windows 10 上却可以正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38585032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com