zoukankan      html  css  js  c++  java
  • Native memory allocation (mmap) failed to map xxx bytes for committing reserved memory

    遇到问题

    在服务器上运行 nexus 出现Native memory allocation (mmap) failed to map 838860800 bytes for committing reserved memory问题。

    原因:查资料后是因为运行 nexus 需要 800m 的内存,而机器配置是1G,剩余可用的只有几十兆,所以导致无法启动

    解决办法

    方法一: 扩大机器配置;

    方法二: 设置交换内存swap(一般设置为内存的两倍大小);

    dd if=/dev/zero of=/tmp/swapfile bs=1024k count=256
    #格式化文件
    mkswap /tmp/swapfile
    #加载交换文件
    swapon /tmp/swap
    #永久生效
    vim /etc/fstab
    #最后一行添加
    /swap1                  swap                    swap    defaults        0 0

    方法三:设置虚拟机的启动参数

    # Xms: 初始化堆内存(heap)
    # Xmx: 最大堆内存
    # PermSize: 初始化永久内存,存储class类,不会被GC
    # MaxPermSize: 最大永久内存
    # Xss: 每增加一个线程(thread)就会立即消耗的内存,而最佳值应该是128K,默认值好像是512
    JAVA_OPTS=-Xss128k -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=1024m

    在这里补充下堆和栈的区别(这个堆和栈不是数据结构的堆和栈)

    栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。
    来看一个网上很流行的经典例子:
    main.cpp
    int a = 0; 全局初始化区
    char *p1; 全局未初始化区
    main()
    {
    int b; 栈
    char s[] = “abc”; 栈
    char *p2; 栈
    char *p3 = “123456”; 123456在常量区,p3在栈上。
    static int c =0; 全局(静态)初始化区
    p1 = (char *)malloc(10); 堆
    p2 = (char *)malloc(20); 堆
    }
    关于堆和栈区别的比喻
    堆和栈的区别可以引用一位前辈的比喻来看出:
    使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
    使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

    原文地址:https://blog.csdn.net/byg184244735/article/details/79832217
  • 相关阅读:
    convex hull
    不努力,你就没有资格谈天赋
    “数数”的感悟
    平行四边形法则的感悟
    ansys 15 Linux 安装问题
    SHV-E210S 刷4.3
    fedora 安装 Oracle11g 遇到的问题
    ObjectArx开发常用资料
    MFC入门(二)
    MFC入门(三)
  • 原文地址:https://www.cnblogs.com/jpfss/p/11052426.html
Copyright © 2011-2022 走看看