java - 如何在 Windows 上增加 Tomcat 堆内存
问题描述
我在互联网上和 stackoverflow 上阅读了很多帖子,但我仍然无法增加Tomcat 堆大小。可能我犯了一个我无法识别的错误。
按照本指南 ,我执行了以下步骤:
- 我在文件夹{tomcat}\bin中创建了文件setenv.bat
- 在文件setenv.bat中,我添加了字符串set "JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx1024m -XX:MaxPermSize=512m -server"
当我运行 Tomcat 然后启动我的应用程序(例如 localhost:8080/appName)并尝试以这种方式了解堆信息时:
long maxHeapSize = Runtime.getRuntime().maxMemory();
long freeHeapSize = Runtime.getRuntime().freeMemory();
long totalHeapSize = Runtime.getRuntime().totalMemory();
System.out.println("Max Heap Size = " + (maxHeapSize/1024/1024)+ " MB");
System.out.println("Free Heap Size = " + (freeHeapSize/1024/1024)+ " MB");
System.out.println("Total Heap Size = " + (totalHeapSize/1024/1024)+ " MB");
我知道最大堆大小始终为 256 MB。有人知道我的错误是什么吗?
解决方案
详情请看:
- 我使用apache-tomcat-9.0.14-windows-x64.zip
- 确定使用正确的java版本
- 编辑 catalina.bat 在 setlocal 之后添加 set JAVA_OPTS=-Xms128m -Xmx1024m
- 用startup.bat启动 Tomcat
- 检查 JVM:启动jconsole,选择Tomcat,选择不安全
- 参见XMS、XMX
如果你想启动Tomcat9w.exe,你需要安装服务
推荐阅读
- scala - spark和mill - 创建一个额外的任务来创建一个过滤的程序集
- reactjs - 在不改变方向的情况下反应 Native Expo 方向监听器
- c# - C# 不识别变量
- javascript - Ajax 在 codeigniter 中获取多个值
- java - AndroidStudio - 片段中的绑定服务
- javascript - 为什么在此快速排序期间超出了我的调用堆栈大小?
- algorithm - 如果它们需要 O(n) 时间对列表进行排序,为什么我们不使用尝试进行排序?
- sparql - 为什么此 wikidata 查询不选择荷兰省份
- php - 为什么我的 PHP 表单在我的电子邮件客户端中显示不同的名称?
- c - 使用优化编译会导致条件错误