初始堆大小无效,无法创建Java虚拟机

0wi1tuuw  于 2022-10-30  发布在  Java
关注(0)|答案(7)|浏览(606)

我面临下一个问题:我尝试通过startup.bat手动启动Tomcat,但似乎没有显示任何结果,然后我尝试运行shutdown.bat,控制台显示以下内容:

D:\apache-tomcat-7.0.35\bin>startup.bat
Using CATALINA_BASE:   "D:\apache-tomcat-7.0.35"
Using CATALINA_HOME:   "D:\apache-tomcat-7.0.35"
Using CATALINA_TMPDIR: "D:\apache-tomcat-7.0.35\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.6.0_31"
Using CLASSPATH:       "D:\apache-tomcat-7.0.35\bin\bootstrap.jar;D:\apache-tomcat-7.0.35\bin\tomcat-juli.jar"
D:\apache-tomcat-7.0.35\bin>shutdown.bat
Using CATALINA_BASE:   "D:\apache-tomcat-7.0.35"
Using CATALINA_HOME:   "D:\apache-tomcat-7.0.35"
Using CATALINA_TMPDIR: "D:\apache-tomcat-7.0.35\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.6.0_31"
Using CLASSPATH:       "D:\apache-tomcat-7.0.35\bin\bootstrap.jar;D:\apache-tomcat-7.0.35\bin\tomcat-juli.jar"
Invalid initial heap size: -Xms256m -Xmx512m -XX:MaxPermSize=256m
Could not create the Java virtual machine.

catalina.bat是原始的,我也检查了所有的路径和选项(即JAVA_HOME,JRE_HOME,CATALINA_BASE,CATALINA_HOME,CATALINA_TMPDIR)。tomcat版本是7.0.35 java v 1.6

owfi6suc

owfi6suc1#

这是你的问题Invalid initial heap size: -Xms256m -Xmx512m -XX:MaxPermSize=256m
有些系统(可能是Windows JRE)可以识别小写的XmsXmx值,这里的256 m和512 m分别表示256 MB和512 MB。
有些机器(Ubuntu上的JDK 1.7)不理解small m for MB,所以当我把Xms 256 m改为Xmx 512 m,to => * Xms 256M改为Xmx 512M*时,它就开始工作了。
P.S -〉我在Ubuntu 15(JDK 1.7)上安装IntelliJ时遇到了这个错误,我编辑了IntelliJ的/bin/idea.vmoptions文件,它开始工作了。
以下是错误设置XmxXms值时可能出现的错误列表-

Java -Xmx 4056 M-Xms 4056 M您好世界

问题:初始化VM时出错,对象堆与VM数据得大小超过了最大可表示大小

  • 原因:-Xms或-Xmx的值大于或接近物理内存的大小,因为我的计算机有4GB内存。*
    Java -Xmx 1056 M-Xms 2056 M您好世界

问题:初始化VM时发生错误,指定的最小和最大堆大小不兼容

  • 原因:-Xms的值大于-Xmx*
    Java -Xms 2056 M您好世界

问题:初始化VM期间出错,无法为对象堆保留足够的空间

  • 原因:只提供了-Xms,而未提供-Xmx。如果键入错误,并且指定了两次-Xms而不是-Xmx,也会出现此错误 *
    Java -Xms 1024 M -Xmx 1024 M您好世界

问题:初始化VM时出错,初始堆太小

  • 原因:如果您的空间介于1024和M之间,则JVM会假定-Xms的大小仅为1024字节,并打印错误,指出它太小,JVM无法启动 *
ghhkc1vu

ghhkc1vu2#

这个问题发生在我试图运行 cassandra 。
卸载Java 32位并安装Java 64位为我解决了这个问题。

t5zmwmid

t5zmwmid3#

问题:您尝试初始化应用程序的最小和最大堆大小,但似乎遇到了一些语法问题。您需要正确设置它。请注意,最小和最大大小点受支持与应用程序正在运行的计算机内存有关。

来自Oracle Documentation

-Xms
The -Xms option sets the initial and minimum Java heap size.
The Java heap (the “heap”) is the part of the memory where blocks of memory
are allocated to objects and freed during garbage collection.

Note:   -Xms does not limit the total amount of memory that the JVM can use.
Format: -Xms<size>[g|G|m|M|k|K]

-Xmx
This option sets the maximum Java heap size.
The Java heap (the “heap”) is the part of the memory where blocks of memory 
are allocated to objects and freed during garbage collection.
Depending upon the kind of operating system you are running,
the maximum value you can set for the Java heap can vary.

Note:   -Xmx does not limit the total amount of memory that the JVM can use.
Operation
Format: -Xmx<size>[g|G|m|M|k|K]

示例

Java客户端java -Xms:64m -Xmx:1g -jar app.jar
关于docker-compose.yml示例(不同的语法):

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    user: jenkins
    environment:
      - JAVA_OPTS=-Xms512m -Xmx2048m 
    ports:
      - "0.0.0.0:8080:8080"
xbp102n0

xbp102n04#

我从here中得到了正确的参数(JAVA_OPTS)。我已经在setenv.bat中设置了它们。

w6mmgewl

w6mmgewl5#

我得到了同样的错误时,初始化H2O的深度学习在R.删除之间的空间设置最小内存大小:
h2o.init(min_mem_size =“10 G”)出现错误:
初始化VM时出错初始堆太小
在删除10和G之间的空格后,它工作了:
最小内存大小=“10G”)

jk9hmnmh

jk9hmnmh6#

在我的例子中,原因是在-javaagent之前有-Xms选项。以正确的顺序执行java -javaagent:xxx -Xms256m就成功了。

crcmnpdw

crcmnpdw7#

即使系统中有可用的物理内存,您也可能会遇到此问题。在大多数32位Java版本中,最大堆大小的范围为1.4G到1.6G。有关详细信息,请通过此链接获取
如果您必须初始化超过1.4G至1.6G堆内存的JVM,则应安装64位Java版本。

相关问题