调用会话内容存档sdk,导致内存溢出?

2024/01/26
提问

下面图片是调用企业微信的代码,调用时没有任何报错,每次都能成功获取到会话内容数据,接口每次调用都是成功的,但是调用了1000次左右就会内存溢出导致服务重启,请问是什么原因呢?

回答·4
2024/12/10

楼主解决了?我的也是,跑一段时间就嗝屁了

赞同
评论 4
2024/12/11
解决了,代码的问题
赞同
回复
回复 2024/12/11
怎么解决的?能给下解决方案?
赞同
回复
回复 2024/12/11
这个需要看代码才能判断
赞同
回复
2024/12/11
具体是哪片代码?,拉取消息内容代码如下:
赞同
回复
你还未登录,请先登录
2024/09/10

实际通过查找资料发现在运行中报错可能是栈内存不足,找到JVM中的-Xss参数(栈内存大小),默认是设置单个线程栈大小,一般默认512~1024kb。单个线程栈大小跟操作系统和JDK版本都有关系,-Xss = -XX:ThreadStackSize。

尝试修改参数为默认最大边界:-Xss10m 10m

-Xms128m -Xmx1024m -Xss10m


赞同 1
评论

您好,可参考这里代码调试下

https://developer.work.weixin.qq.com/document/path/91551

赞同
评论 8
需注意调用Finance.FreeSlice、Finance.DestroySdk释放资源
赞同
回复
回复 2024/01/29
您看一下代码呢,我就是按照这个步骤操作的,就是隔一段时间就会内存溢出,sdk只初始化了一次,后就一直重复使用的
赞同
回复
2024/01/29
有没有可能是我获取会话内容和解密会话内容都是使用的同一个Finance.NewSlice()生成的原因呢
赞同
回复
回复 2024/01/29
只有NewSlice没有FreeSlice释放资源的话,是会导致内存溢出的,参考demo调试看下
赞同
回复
回复 2024/01/29
您看下代码呢,我最后是调用了代码释放了的
赞同
回复
2024/09/02
@技术支持-玄一
大哥,不是没释放资源导致的,而是单次拉取消息后进行Finance.GetContentFromSlice时,如果java应用配置的内容不够,就直接溢出,导致整个应用宕机了。理论上来说,如果单条消息太大,应用配置的内存不够,就会出现这个问题。解决方案:能否增加一个功能,在调用Finance.GetContentFromSlice前,允许判断预计所需的内存大小,如果太大,则可以由调用方选择放弃或者其他处理方式呢?
赞同
回复
2024/09/02
不然目前这样,每次拉取条数这个参数不好设置。我这一开始设置1000,跑一会儿就出问题;调成500,能跑的时间长一点;调成100,能跑的时间更长。但还是会出问题,遇上非工作日,就坑了,整个应用都宕机,不得不被迫加班,对应用进行重启。
赞同
回复
回复 2024/11/20
请问这个问题 有解决吗
赞同
回复
你还未登录,请先登录
2024/01/26

sdk版本是SDK v1.2版本

赞同
评论