云计算百科
云计算领域专业知识百科平台

服务器提示 无法分配内存的问题 errno=12 解决方法

今天遇到一个问题服务器上运行的Java项目突然不能访问,没有注意,直接去再次启动发现

rootelocalhost binl#./startserver.shOpeniDK 64Bit Server V warning: INFo: os::commit memory(0x0000000082000000, 131830528,0)failed;error='Cannot allocate memory'(errno=12)rootalocalhost binl#

errno=12 无法分配内存内存的错误出现了

通过命令

free h 查看系统的内存

出现
total used free shared buff/cache available
Mem: 126Gi 112Gi 7.7Gi 3.6Gi 5.9Gi 1.0Gi
Swap: 4.0Gi 0.0Gi 4.0Gi

Mem:
total: 总内存大小,表示系统的物理内存总量,这里是 126Gi(126 GB)。
used: 已使用的内存,表示当前已被程序和系统占用的内存部分,这里是 112Gi。
free: 空闲内存,表示当前未被占用且可用的内存部分,这里是 7.7Gi。
shared: 被多个进程共享的内存,通常是系统缓存或共享内存,这里是 3.6Gi。
buff/cache: 缓存和缓冲区占用的内存,表示用于文件缓存和其他缓存的数据,这里是 5.9Gi。
available: 可用内存,表示当前可供程序使用的内存。这个值通常会比 free 值大,因为它考虑了缓存可以被回收的情况,这里是 1.0Gi。

Swap:
total: 交换空间总大小,表示用于虚拟内存的空间大小,这里是 4.0Gi。
used: 已使用的交换空间,表示当前已经交换到磁盘的内存部分,这里是 0.0Gi。
free: 剩余的交换空间,这里是 4.0Gi。

在网上找了很多的方法,最终决定增加Swap的内存来暂时解决一下

这算是一个临时的解决方案,长期依赖交换空间,可影响系统性能,最好还是从优化内存使用,或者增加物理内存来解决这个问题。具体命令如下:

1 创建1GB的交换文件 (也可以适当调整)
sudo fallocate l 1G /swapfile1 # 创建1GB大小的交换文件
sudo dd if=/dev/zero of=/swapfile1 bs=1M count=1024 如果你的磁盘空间不足,使用 dd 命令也可以创建交换文件:

2 设置交换文件的权限
sudo chmod 600 /swapfile1

3 格式化交换文件
sudo mkswap /swapfile1

4 启用新的交换空间
sudo swapon /swapfile1

5 查看 交换空间是否启用 命令
free h

total used free shared buff/cache available
Mem: 126Gi 112Gi 7.7Gi 3.6Gi 5.9Gi 1.0Gi
Swap: 5.0Gi 0.0Gi 5.0Gi

6 使交换文件在系统重启后仍然有效
sudo sh c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'

赞(0)
未经允许不得转载:网硕互联帮助中心 » 服务器提示 无法分配内存的问题 errno=12 解决方法
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!