如何避免Mule应用程序中的内存泄漏?

阿提拉

为了避免Mule应用程序中的内存泄漏,是否必须考虑一些特殊的事情

我们如何避免Mule应用程序中的内存泄漏?

例如; 我们实际上是否必须删除流量变量?Mule应用程序的开发人员必须显式完成哪些操作,Mule RuntimeJVM GC(自动)完成哪些操作

卡马尔·瓦姆西(Kamal Vamsi)

解决内存泄漏问题的一个好方法是在看到大型主GC之后内存回收下降之后立即进行(所有节点的)堆转储。有多种工具可以帮助您分析内存泄漏。

该主题中一篇很棒的博客文章总结了一些与内存泄漏有关的问题,例如以下发现:

结果池内存管理器通常会抢占JVM堆的10%并与之一起生存而不释放。修复:切换Grizzly内存管理器实现HeapMemoryManager。请注意,HeapMemoryManager是默认实现,由Grizzly建议使用,以提高性能。尽管,Mule将PoolMemoryManager实现视为默认实现。

Wrapper.conf更改:

wrapper.java.additional.<XX>=-Dorg.glassfish.grizzly.DEFAULT_MEMORY_MANAGER=org.glassfish.grizzly.memory.HeapMemoryManager

发现异步日志记录被广泛使用,并且观察到相关的Log4J拥有大量的JVM内存。256 * 1024插槽的默认设置显然太高。由于此RingBuffer不会增大或缩小,因此将每个插槽分配为一个单独的对象(RingBufferLogEvent)的较高的固定大小可能会占用大量内存,每个对象都持有一个日志事件。

修复在wrapper.conf或log4j2.xml中将Log4J RingBuffer的大小减小到128

wrapper.java.additional.<XX>=-DAsyncLoggerConfig.RingBufferSize=128

或者,在log4j2.xml中:

<AsyncLogger name="DebugLog" level="info" includeLocation="true" ringBufferSize="128">

由于默认的HazelCast实现用于聚合器组件(拆分器-聚合器模式),导致内存泄漏。

结果:默认情况下,堆分析指向的内存被HazelCast对象存储实现保留,该对象用于特定流中的拆分器-聚合器组件。好像商店没有适当地过期。

修复:编写了自定义对象存储实现(PartitionedInMemoryObjectStore的子类),并且为明确定义的条目设置了TTL(TimeToLive)。

@Override 
public void expire(int entryTTL, int maxEntries, String partitionName) throws ObjectStoreException
{
    super.expire(entryTTL, maxEntries, partitionName);
    if (getPrivatePartitionSize(partitionName) == 0) {
disposePartition(partitionName);
    }
}

参考:https : //dzone.com/articles/enduring-black-fridays-with-mulesoft-apis

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何减少/消除Angular应用程序中的内存泄漏

如何跟踪Rails应用程序中的内存泄漏?

如何找到我的Java应用程序的内存泄漏

如何修复MQTT应用程序的内存泄漏?

如何分析“ azure Web应用程序”(PaaS)的内存泄漏

Java Web应用程序中的内存泄漏

了解Android应用程序中的内存泄漏

无法找出C应用程序中的内存泄漏

长期运行的C ++应用程序中的内存泄漏

远程识别客户使用的应用程序中的内存泄漏

Java Web应用程序中的内存泄漏

在Go应用程序中查找内存泄漏

iPhone应用程序内存泄漏与NSMutableArray中的UIImages

如何在大型c ++ Linux应用程序中检查内存泄漏?

如何在Linux(Ubuntu OS)中检测C ++应用程序的内存泄漏?

Delphi应用程序中的内存泄漏。如何正确处理对象和字符串?

Android 应用程序和内存泄漏

Web应用程序DataTable内存泄漏?

如何避免应用程序冻结在内存中执行功能?

如何避免回调中的内存泄漏?

如何避免PHP 5.4中的内存泄漏?

如何避免RecyclerView ViewHolder中的内存泄漏?

转储内存以查找C ++应用程序中的内存泄漏

如何在使用Rails 4.2.1 + Nginx + Passenger构建的应用程序中调试内存泄漏并进行线程分析?

我的React应用中由于Firebase导致的内存泄漏以及如何避免它?

Java应用程序中的已加载类数中可能的内存泄漏

如何在Android中释放内存以避免内存泄漏

Phaser .js内存泄漏。如何在Phaser Canvas应用程序中正确释放对象?

Windows Development:如何确定我的应用程序是否正在泄漏内存?