• Could not reserve enough space for object heap解决办法


    Centos6.4  Jdk1.6

    1.在终端输入Java命令报错

    [root@localhost local]# java
    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.

    2.是系统参数(overcommit_memoryovercommit_ratio)配置的问题

    3.查看系统内存分配状态

    [root@localhost local]# grep -i commit /proc/meminfo
    CommitLimit:    15550904 kB
    Committed_AS:   15098404 kB

      看到CommitLimit和Committed_As参数。

      CommitLimit是一个内存分配上限,CommitLimit = 物理内存 * overcommit_ratio(默认50,即50%) + swap大小
      Committed_As是已经分配的内存大小。

    4.内核参数overcommit_memory

    [root@localhost local]# cat /etc/sysctl.conf | grep overcommit_memory
    vm.overcommit_memory=2

      它是 内存分配策略

      可选值:0、1、2。
      0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
      1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
      2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

    5. 解决办法
      将vm.overcommit_memory 设为1即可
      有三种方式修改内核参数,但要有root权限:

    1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效

    2)sysctl vm.overcommit_memory=1

    3)echo 1 > /proc/sys/vm/overcommit_memory

    参考:http://blog.csdn.net/whycold/article/details/21388455

           http://blog.csdn.net/jollyjumper/article/details/24127009

  • 相关阅读:
    Fix Installing .NET Framework 3.5 failed Error Code 0x800F0954 on Windows 10
    RHEL8安装五笔输入法
    Enable EPEL and Local Repository on RHEL8
    Why is Yum Replaced by DNF?
    检查Linux服务器是否被攻击的常用命令及方法
    IDEA 主题
    IDEA 如何显示一个类中所有的方法
    Appium 安装以及安装过程中遇到的问题
    Maven 如何发布 jar 包到 Nexus 私库
    java泛型的基本使用
  • 原文地址:https://www.cnblogs.com/liuchao102/p/4588590.html
Copyright © 2020-2023  润新知