开发者社区> 问答> 正文

MemoryEventStore内存管理

先说下我的情况,我采用嵌入式方式将canalServer嵌入业务系统,并且针对MemoryEventStore设置了batchMode=MEMSIZE,bufferSize=16*1024,按理说每一个MemoryEventStore的最大内存都不会超过16M,但是我在分析jvm内存试发现某个MemoryEventStore的内存升到了32M,很是不理解,求解,谢谢!

原提问者GitHub用户pc-fuqq

展开
收起
古拉古拉 2023-05-08 12:19:33 74 0
2 条回答
写回答
取消 提交回答
  • 我记得这里的MEMSIZE是根据binlog里面的二进制大小计算的,实际的heap占用还要算上对象的膨胀会大一些

    原回答者GitHub用户zwangbo

    2023-05-09 17:33:04
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    根据您提供的情况,可能有以下几个原因导致某个MemoryEventStore的内存升高到32M:

    业务数据量过大:如果某个MemoryEventStore处理的数据量非常大,那么它需要占用更多的内存来存储这些数据。在这种情况下,您可以尝试增加batchMode或bufferSize的值来提高内存使用效率。

    系统资源不足:如果您的系统资源(如CPU、内存等)不足以支持MemoryEventStore的正常运行,那么它可能会占用更多的内存来处理数据。在这种情况下,您可以尝试优化系统配置或者升级硬件设备来提高系统性能。

    JVM参数设置不当:JVM参数设置不当也可能导致MemoryEventStore的内存升高。例如,如果JVM堆内存设置过小,那么它会频繁进行垃圾回收,从而影响程序的性能。在这种情况下,您可以尝试调整JVM参数来优化程序性能。

    综上所述,针对MemoryEventStore内存升高的问题,您需要仔细分析具体情况并采取相应的措施来解决问题。建议您可以通过调整batchMode、bufferSize、JVM参数等手段来优化程序性能,并及时监控程序运行情况,以便及时发现和解决问题。

    2023-05-08 14:08:18
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载