关于javaweb项目中调用matlab接口导致内存占用高

时间:2024-03-29 18:34:29

最近在做javaweb项目,需要用到matlab进行数据计算需要,所以用matlab打包的方法进行开发。

 

项目需求:

本项目是需要从本地上传多张图片,然后调用matlab对图片进行处理。

出现问题:

在上传图片处理过程中发现内存占用飙升。

问题浮现:

在未开始上传文件时:

关于javaweb项目中调用matlab接口导致内存占用高

上传完文件之后:其占用内存一直是这个数值不变(等了一段时间)

关于javaweb项目中调用matlab接口导致内存占用高

右键点击该进程,找到详细信息,找到其pid

关于javaweb项目中调用matlab接口导致内存占用高

 使用jconsole连接

关于javaweb项目中调用matlab接口导致内存占用高

 会发现该线程存在垃圾回收,文件上传完毕后内存占用稳定在200多M

关于javaweb项目中调用matlab接口导致内存占用高

手动执行gc:发现其内存占用依然很高。

关于javaweb项目中调用matlab接口导致内存占用高 

开始处理问题的过程:

1、第一反应是可能我的图片在程序处理过程中一直保留在内存中,没有被垃圾收集器进行回收。所以我对上传的图片进行了处理,让垃圾收集器能够对其回收,但是发现该问题还是没有解决。

2、由于使用了redis,以为是redis连接导致(可能连接没关,或其他问题)。注释掉redis代码之后该问题还是没有解决。

3、由于代码量不多,有的问题都排除了,就只有调用matlab接口了。考虑到调用之后没有及时关闭资源等问题,所以对matlab进行注释。发现内存占用问题消失了。然后在网上找了一下解决方案,在调用了matlab接口之后使用matlab打包类调用其dispose()方法对资源及时释放。

问题:

javaweb调用matlab程序没有释放资源导致。