java虚拟机内存不足,“Could not create the Java Virtual
Machine”问题解决方案

在运行java程序时,遇到问题"Could
not create the Java Virtual Machine."如下截图:

大概原因,就是java堆内存不足以运行JVM,需要增加内存。

网上搜索此问题,大部分都是针对某个程序进行修改JVM内存的解决方法,比如eclipse,等。试问,若是其他程序出现问题了呢?

现在给出一个全局的java虚拟机修改内存的方法。在WIN
XP,WIN 7,WIN8都可以。

解决方案:增加一个系统环境变量

变量名:_JAVA_OPTIONS

变量值:-Xmx512M

保存后,就OK!!

下面给出关于java堆内存的一个介绍,这是一个英文网页的翻译过来的。

关于java堆内存:

Java
-Xmx is the configuration parameter to control the amount of memory Java uses on
a system. Basically these settings are there to control the Heap memory size of
Java. There are two settings related to Java heap memory:

  • -Xmx to set the
    maximum heap memory size
  • -Xms to set the
    minimum heap memory size

Tips
to set the Java heap memory size

Managing
the Java heap memory size for a server is very crucial as the whole performance
depends on this memory size, off course there are other factors which affects
the performance. So let’s see how you can set these parameters to control the
Java heap memory size.

Do
not set -Xmx to too small value 

If
you set -Xmx too small for your server then your application may not work
properly and you may get Out of memory exception. So never set this too small as
this is the maximum amount of memory you are allocating for Java and it cannot
utilize memory beyond the set value.

It
is always advisable to set -Xmx to a higher value if you have enough memory
space available on your server. On the other hand if you set -Xmx value to a
higher value your other resources will not be able to perform well as you have
already reserved some of your memory for Java. So before setting the maximum
heap size memory just check how much memory is free. To do so, stop your
application server and check the free memory and accordingly you can set the
maximum memory size. For example if you have 512M free memory then you can set
heap memory to 300M safely i.e. -Xmx300m.

Set
-Xms to a small value

If
you set -Xms to higher value you might run out of memory. So always try to keep
it to a small value like -Xms16m. In tomcat when you restart the server it
starts a Java process and that process takes the same -Xms as the default value
for the tomcat and if it is higher you may get out of memory.

Now
let’s see how to set java heap memory in different servers.

How
to set java heap size in Tomcat

To
set the java heap size in tomcat you need to edit the catalina.sh (On Linux) or
catalina.bat (On Windows) file. You can find these files inside the bin
directory of tomcat. Open the appropriate file and search for CATALINA_OPTS and
set the value as shown below, you can change the max and min value to whatever
you want.

set
CATALINA_OPTS=-Xms64m -Xmx512m

export
CATALINA_OPTS=”-Xms64m -Xmx512m”

setenv
CATALINA_OPTS “-Xms64m -Xmx512m”

大概翻译如下:

Java
- xmx配置参数控制Java系统上使用的内存量。 基本上这些设置有控制Java堆内存的大小。
有两种设置相关的Java堆内存:

  • -
    xmx设置最大的堆内存的大小
  • xms设置最小堆内存大小

建议设置Java堆内存大小

管理服务器的Java堆内存大小是非常重要的整个性能取决于这个内存大小,当然还有其他因素影响性能。
所以让我们来看看你可以设置这些参数来控制Java堆内存大小。

不设置-
xmx太小价值  

如果你为你的服务器设置-
xmx太小,那么您的应用程序可能无法正常工作,你可能会得到内存不足异常。
所以不要设置过小,因为这是你们的最大内存分配为Java和它不能利用内存超出设定的值。


总是明智的- xmx较高的值,如果你有足够的内存空间可用的服务器上。 另一方面如果你-
xmx值设置为较高的值其他资源将无法执行以及你已经保留你的一些Java内存。 所以设置最大堆大小的内存之前就检查多少内存是免费的。
为此,停止应用服务器并检查空闲内存,因此您可以设置最大的内存大小。
例如,如果你有512的空闲内存,那么你可以设置堆内存300安全即-Xmx300m。

xms设置为一个较小的值

如果你设置xms更高的值可能会耗尽内存。
所以总是试图保持它像-Xms16m一个较小的值。 在tomcat中当你重新启动服务器,启动一个Java进程,过程需要相同的xms
tomcat的默认值,如果它是更高的你可能会失去记忆。

现在让我们看看如何在不同的服务器上设置java堆内存。

如何设置Tomcat
java堆大小


置java堆大小在tomcat中您需要编辑catalina.sh(在Linux上)或catalina。
蝙蝠(在Windows上)文件。 你可以找到这些文件在tomcat的bin目录。
打开相应的文件和搜索CATALINA_OPTS和设置值如下所示,你可以改变任何你想要的最大和最小值。

设置CATALINA_OPTS
= -Xms64m -Xmx512m

出口CATALINA_OPTS
= " -Xms64m -Xmx512m”

setenv
CATALINA_OPTS”-Xms64m -Xmx512m”


java虚拟机内存不足,“Could not create the Java Virtual Machine”问题解决方案的更多相关文章

  1. Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)

    Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...

  2. 重读《深入理解Java虚拟机》一、Java虚拟机内存区域的划分

    一.Java虚拟机内存区域如何划分 1.Java虚拟机内存区域的划分 区域名称 作用(用途) 类型 特点 虚拟机规定异常情况 内存分配与回收 其他说明 1 程序计数器 指示当前正在执行的字节码指令地址 ...

  3. Java虚拟机内存模型及垃圾回收监控调优

    Java虚拟机内存模型及垃圾回收监控调优 如果你想理解Java垃圾回收如果工作,那么理解JVM的内存模型就显的非常重要.今天我们就来看看JVM内存的各不同部分及如果监控和实现垃圾回收调优. JVM内存 ...

  4. 【转】 Java虚拟机内存的堆区(heap),栈区(stack)和静态区(static/method)

    JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令 ...

  5. 如何设置Java虚拟机内存以适应大程序的装载

    Java虚拟机对于运行时的程序所占内存是有限制的,当我们的项目或者程序很大时,往往会照成内存溢出. 举个例子: public class SmallTest1 { public static void ...

  6. 打包apk java 虚拟机内存不足

    解决方案:在android->sdk->build-tools-android-version 中有个 dx.bat dx.bat --dex 命令的dx.bat脚本有这样一句代码 REM ...

  7. Java虚拟机-内存tips

    java虚拟机内存可以分为独占区和共享区. 独占区:虚拟内存栈.本地方法栈.程序计数器. 共享区:方法区.Java堆(用来存放对象实例). 程序计数器 比较小的内存空间,当前线程所执行的字节码的行号指 ...

  8. JVM基础系列第6讲:Java 虚拟机内存结构

    看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了.那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了.在这个过程中,J ...

  9. 总结Java虚拟机内存区域模型

    本篇文章主要来总结一下Java虚拟机内存的各个区域,以及这些区域的作用.服务对象以及其中可能产生的问题,作为大家的面试宝典. 首先我们来看一下Java运行时的数据区域,Java虚拟机在执行Java程序 ...

随机推荐

  1. Tomcat连接池配置与实现/JNDI

    方法一: 在Tomcat的conf/context.xml中配置在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下: <?xml ...

  2. Bootstrap 使用

    bootstrap模板为使IE6.7.8版本(IE9以下版本)浏览器兼容html5新增的标签,引入下面代码文件即可. <script src="https://oss.maxcdn.c ...

  3. 深度学习 ——style reconstruction

    多层神经网络的实质就是为了找出更复杂,更内在的features...图像的style, how to describe, impossible! 但是人眼却可以分辨. (参考论文 A Neural a ...

  4. sql插入oracle链接的数据

    报错OLE DB 访问接口 "OraOLEDB.Oracle" 返回了消息 "ORA-29275: 部分多字节字符". select addr from tes ...

  5. [C++]PAT乙级1006. 换个格式输出整数 (15/15)

    /* 1006. 换个格式输出整数 (15) 让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数. 例如234应该 ...

  6. 第20月第4天 pycharm utf-8

    1.运行python %run a.py 运行 https://blog.csdn.net/little_bobo/article/details/78982412 2.UnicodeDecodeEr ...

  7. python中时间的转换和使用datetime

    模块 一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性.模块是一种组织型式,它许多有关联(关系)的代码组织放到单独的独立文件中.简单的说,可以把模块理解为一 ...

  8. python 中的列表List

    一 定义:能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开(有索引和切片) 索引:每个元素对于一个单独索引号 切片, list ...

  9. 【译】第六篇 SQL Server安全执行上下文和代码签名

    本篇文章是SQL Server安全系列的第六篇,详细内容请参考原文. SQL Server决定主体是否有必要的执行代码权限的根本途径是其执行上下文规则.这一切都可能复杂一个主体有执行代码的权限,但是却 ...

  10. cartographer 最新版安装测试

    在官网的基础上稍加修改,但保证代码都是最新的 我的系统配置: Debian9 strech,  ROS lunar 该方法对 ubuntu 系列操作系统以及其他ROS版本同样适用. 1.  安装依赖库 ...