java - 在 Tomcat 中设置堆大小

标签 java tomcat heap-memory

我正在 unix 环境中的 apache tomcat 服务器上工作。我想增加我的应用程序的堆大小,所以我在 catalina.sh 文件中设置它。我就是这样做的...

导出 CATALINA_OPTS="-Xms1024m -Xmx1024m" 回声 $CATALINA_OPTS

当我调用 startup.sh 时,它会调用 catalina.sh 并将变量 CATALINA_OPTS 设置为 1024,如脚本中的 echo 语句所示。但是如果我在命令提示符下回显 $CATALINA_OPTS 它会给出空白。这是预期的行为吗?我如何确定确实已提取正确的堆值?

最佳答案

是的,$CATALINA_OPTS 在 shell 执行的脚本之外将不可用。为了获得正确的堆大小,您需要一个分析器,或使用 jmap 来获取堆信息 - 这里 39196 是我机器上 tomcat 进程的 PID。

mpandit-mbp:~ mpandit$ jmap -heap 39196
Attaching to process ID 39196, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 19.1-b02-334

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 132120576 (126.0MB)
   NewSize          = 21757952 (20.75MB)
   MaxNewSize       = 87228416 (83.1875MB)
   OldSize          = 65404928 (62.375MB)
   NewRatio         = 7
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 85983232 (82.0MB)

关于java - 在 Tomcat 中设置堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855705/

相关文章:

c++ - 错误动态数组

Java字符转换

java - 在 Spring Boot 中,某些字段未在 JSON 中被解析/反序列化

java - 为什么打印 "B"比打印 "#"慢得多?

tomcat 7 maxThreads 选择标准

java - java 和 jsp 中的搜索查询不起作用

eclipse - 引用 undefined variable jrebel_args

java - 如何强制 Hibernate 在更新查询中使用 AND?

winapi - 解释 App Verifier 输出 : Heap corruption or misinterpreting stack address as heap address?

java - V8 如何管理它的堆?