当前位置: 首页 > 知识库问答 >
问题:

Tomcat JVM 内存调整

郭均
2023-03-14

我使用tomcat7和jvm内存选项设置为

-Xms2048m -Xmx2048m 
-XX:NewSize=256m -XX:MaxNewSize=256m 
-XX:PermSize=256m -XX:MaxPermSize=256m 

使用这些设置,服务器无法启动,出现错误

Error occurred during initialization of VM
Too small initial heap for new size specified

即使我将NewSize增加到512或1024,它也是一样的,只有当我删除Newsize选项时才有效。Foor堆大小为2048MB,这些大小有效吗?

共有2个答案

松阳泽
2023-03-14

我有4gb ram 64位。我也得到了同样的错误,但通过此配置进行了修复。设定 JAVA_OPTS=%JAVA_OPTS% -Xms2560m

set JAVA_OPTS=%JAVA_OPTS% -Xmx2560m
set JAVA_OPTS=%JAVA_OPTS% -XX:NewSize=1280m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxNewSize=1280m
set JAVA_OPTS=%JAVA_OPTS% -XX:PermSize=400m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=400m
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCompressedOops
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParNewGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC
set JAVA_OPTS=%JAVA_OPTS% -XX:SurvivorRatio=6
set JAVA_OPTS=%JAVA_OPTS% -XX:+CMSClassUnloadingEnabled
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval=3600000
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.server.gcInterval=3600000
戚星腾
2023-03-14

删除NewSize参数,然后在运行应用程序时监控YoungGen的占用率。根据YoungGen的大小,您可以返回并将参数更改为最佳值。

使用例如gc日志记录和/或jstat查看堆中每个区域的占用情况。

此外,检查您的参数是否被VM正确解析,例如,不是256MB的YoungGen JVM可能认为您需要256B。

 类似资料:
  • 调整内存的使用以及Spark应用程序的垃圾回收行为已经在Spark优化指南中详细介绍。在这一节,我们重点介绍几个强烈推荐的自定义选项,它们可以 减少Spark Streaming应用程序垃圾回收的相关暂停,获得更稳定的批处理时间。 Default persistence level of DStreams:和RDDs不同的是,默认的持久化级别是序列化数据到内存中(DStream是StorageLe

  • 调整内存布局 上一节中我们看到,编译出的程序默认被放到了从 0x11000 开始的位置上: 运行输出 start address: 0x0000000000011000 ... Program Header: PHDR off 0x0000000000000040 vaddr 0x0000000000010040 ... LOAD off 0x0000000000000

  • 在Scrapy中,类似Requests, Response及Items的对象具有有限的生命周期: 他们被创建,使用,最后被销毁。 这些对象中,Request的生命周期应该是最长的,其会在调度队列(Scheduler queue)中一直等待,直到被处理。 更多内容请参考 架构概览 。 由于这些Scrapy对象拥有很长的生命,因此将这些对象存储在内存而没有正确释放的危险总是存在。 而这导致了所谓的”内

  • 问题内容: 我有一个在django中运行的小型多线程脚本,随着时间的流逝,它开始使用越来越多的内存。将其保留一整天会消耗大约6GB的RAM,我开始进行交换。 在http://www.lshift.net/blog/2008/11/14/tracing-python-memory- leaks 之后,我将其视为最常见的类型(仅使用800M内存): 这没有什么奇怪的。我现在应该怎么做才能帮助调试内存问

  • 问题内容: 我们在内存中使用hdsqldb运行针对数据库运行的junit测试。在通过弹簧配置运行每个测试之前,已设置数据库。一切正常。现在,当测试失败时,可以方便地检查内存数据库中的值。这可能吗?如果可以,怎么办?我们的网址是: jdbc.url = jdbc:hsqldb:mem:testdb; sql.enforce_strict_size = true 每次测试后,数据库都会被破坏。但是,当

  • The allocation mechanisms within APR have a number of debugging modes that can be used to assist in finding memory problems. This document describes the modes available and gives instructions on activ