Hessian调用,内存没有释放

Tiger-3D 2014-03-19 12:24:05
服务器端Hessian接口的实现代码中,一个数组申请了10M的内存,然后用这个数组作为参数去调用一个JNI dll的接口,这个接口里面什么也不做。客户端循环调用Hessian接口100次之后,服务器端tomcat就挂掉了,原因是内存不足。但是,如果Hessian接口里面不调用JNI dll的接口的话,仍然循环100次,就不会有问题。
请问,这是什么原因?
...全文
1299 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger-3D 2014-03-19
  • 打赏
  • 举报
回复
引用 2 楼 huxiweng 的回复:
你主贴一分析就知道了啊。
引用 3 楼 huxiweng 的回复:
我本以为是dll中的内存问题
帖子中说了C++的dll中没有任何操作,直接return 0;原来是在JNI封装这一层出问题了。
teemai 2014-03-19
  • 打赏
  • 举报
回复
我本以为是dll中的内存问题
teemai 2014-03-19
  • 打赏
  • 举报
回复
你主贴一分析就知道了啊。
Tiger-3D 2014-03-19
  • 打赏
  • 举报
回复
找到问题了,原因不在Hessian,是JNI封装中间出了问题。 JNI封装中调用了GetByteArrayElements这个函数,但是没有调用ReleaseByteArrayElements来释放前一个函数所分配的内存,导致内存泄露。 嗨皮啊,惆怅了两天。

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧