无法让Mule 3.4.0使用超过4GB的内存

 heishi86188 发布于 2023-01-29 16:27

我目前正在开发一个需要大量内存的项目,我不能让Mule 3.4.0使用超过4GB的RAM(在RHEL 6.2上运行).我正在使用Java HotSpot 64位服务器JVM 1.7.0_45-b18和社区版Mule.

我一直在编辑wrapper.conf文件,我尝试了很多设置无济于事.

我看到Mule JIRA中列出了一个错误:https://www.mulesoft.org/jira/browse/MULE-7018,它已经关闭3.4.0,但是不完整.

我最近的尝试是明确尝试强制它立即占用8gb的堆空间,以下是最新的尝试:

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=8192

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=8192

我已经尝试将initmemorymaxmemoryparemeter设置为零,根据这篇关于包装器的老帖子:http://java-service-wrapper.996253.n3.nabble.com/4096MB-heap-limit-td1483.html - 但是,这会导致骡子无法正常启动.

我还明确尝试通过包装器传递其他JVM参数:

wrapper.java.additional.6=-Xmx8192
wrapper.java.additional.7=-Xms8192

执行此操作时,我可以看到两个内存设置都被发送到JVM(即-Xmx8192 -Xms8192首先在进程线上跟随-Xms4096m -Xmx4096m).但是,我的top命令产生的JVM进程占用的内存不超过4.2gb.我意识到顶级RES列不是确定JVM内存使用率的100%确定方式,但我的印象是,如果我试图分配8gb开箱即用,它肯定应该超过4GB.该机器具有60GB的物理内存.

有没有人发现为Mule 3.4.0获得超过4GB的堆空间的方法?

1 个回答
  • 我相信Anton的答案会很好,但我无法清楚地知道Java Service Wrapper的许可证何时更改为GPL并且不想冒这个改变对我的用例产生任何负面影响.

    我找到了一种使用Mule 3.4.0中包含的当前版本的Java Service Wrapper来完成这项工作的方法,因此JSW对GPL的更改没有任何额外的许可证含义.

    如果修改wrapper.conf以将最小和最大内存设置显式设置为0:

    wrapper.java.initmemory=0
    wrapper.java.maxmemory=0
    

    然后你可以直接通过附加属性传递内存参数,也可以在wrapper.conf中:

    wrapper.java.additional.6=-Xmx8192m
    wrapper.java.additional.7=-Xms4096m
    

    在initmemory和maxmemory显式设置为零的情况下,包装器将不再首先将自己的内存参数传递给JVM,因此允许您指定自己的内存参数.请注意,这不适用于maxPermGen - 由于某种原因,JSW仍为其指定了自己的值.

    2023-01-29 16:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有