java本机内存分配Native memory allocation mmap失败问题解决

 更新时间:2023年11月03日 09:18:13   作者:丰木  
这篇文章主要介绍了java本机内存分配Native memory allocation mmap失败问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. 报错

jenkins中启动java的jar包起不来, 最终原因是没有swap空间。

> OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000795380000, 591396864, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 591396864 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid23.log

2. 查看服务器内存

[root@me opt]# free -m
              total        used        free      shared  buff/cache   available
Mem:          31490       28715        2018           9         756        2380
Swap:             0           0           0
[root@me opt]# free -g
              total        used        free      shared  buff/cache   available
Mem:             30          28           1           0           0           2
Swap:             0           0           0

3. 操作

[root@me opt]# dd if=/dev/zero of=swapfile bs=1024 count=500000
500000+0 records in
500000+0 records out
512000000 bytes (512 MB) copied, 1.41014 s, 363 MB/s
[root@me opt]# mkswap swapfile
Setting up swapspace version 1, size = 499996 KiB
no label, UUID=6f2e755d-d294-4f4c-8671-d965ae9d15e5
[root@soin opt]# swapon swapfile
swapon: /opt/swapfile: insecure permissions 0644, 0600 suggested.
[root@me opt]# free -h
              total        used        free      shared  buff/cache   available
Mem:            30G         28G        1.4G        9.1M        1.3G        2.3G
Swap:          488M          0B        488M

4. 解释说明:

4.1 root权限下,创建swapfile

第一步:创建一个大小为500M的文件dd if=/dev/zero of=swapfile bs=1024 count=500000

4.2 将swapfile设置为swap空间

(第二步:把这个文件变成swap文件)mkswap swapfile

4.3 启用交换空间,感同mount操作

swapon swapfile (删除交换空间 swapoff swapfile)

以上就是java本机内存分配Native memory allocation mmap失败问题解决的详细内容,更多关于java本机内存分配的资料请关注脚本之家其它相关文章!

相关文章

  • 100-200之间所有素数求和程序代码(二个版本)

    100-200之间所有素数求和程序代码(二个版本)

    写一个求100-200之间素数,并求和的程序,大家参考使用吧
    2013-11-11
  • Java多线程4种拒绝策略小结

    Java多线程4种拒绝策略小结

    当线程池中的任务队列已满且无法再接受新的任务时,就需要采取拒绝策略来处理这种情况,本文主要介绍了Java多线程拒绝策略,包含了四种常见的拒绝策略,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Java结构型设计模式之装饰模式详解

    Java结构型设计模式之装饰模式详解

    装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能
    2023-03-03
  • Log4j_配置方法(全面讲解)

    Log4j_配置方法(全面讲解)

    下面小编就为大家带来一篇Log4j_配置方法(全面讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • spring boot 即时重新启动(热更替)使用说明

    spring boot 即时重新启动(热更替)使用说明

    这篇文章主要介绍了spring boot 即时重新启动(热更替)的相关资料,需要的朋友可以参考下
    2017-12-12
  • Java开发SSM框架微信支付的实现

    Java开发SSM框架微信支付的实现

    这篇文章主要介绍了Java开发SSM框架微信支付的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Java递归简单实现n的阶乘

    Java递归简单实现n的阶乘

    这篇文章主要介绍了Java递归简单实现n的阶乘,递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法,下面我们举一个小小的例子详情了解一下,需要的朋友可以参考下
    2021-12-12
  • Mybatis 中的sql批量修改方法实现

    Mybatis 中的sql批量修改方法实现

    在项目中遇到需要批量更新的功能,原本想的是在Java中用循环访问数据库去更新,但是心里总觉得这样做会不会太频繁了,太耗费资源了,效率也很低,查了下mybatis的批量操作,原来确实有<foreach>标签可以做到,下面通过本文给大家介绍下
    2017-01-01
  • jsch中ChannelShell与ChannelExec的区别及说明

    jsch中ChannelShell与ChannelExec的区别及说明

    这篇文章主要介绍了jsch中ChannelShell与ChannelExec的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • MyBatis一级缓存与二级缓存原理与作用分析

    MyBatis一级缓存与二级缓存原理与作用分析

    mybatis-plus是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生,这篇文章带你了解Mybatis的一级和二级缓存
    2022-12-12

最新评论