欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 【java-ffmpeg】java 内存测试和集成

【java-ffmpeg】java 内存测试和集成

2024/11/29 18:11:20 来源:https://blog.csdn.net/u011529752/article/details/143885567  浏览:    关键词:【java-ffmpeg】java 内存测试和集成

内存监控

最近在用javacpp 挂ffmpeg来用,写完代码想监控一下内存,发现jprofile的内存监控不到jni的内存。在linux上想了一个土方法,监控进程的内存。用脚本循环读取。这里不像C++进程只读取VmRSS,即驻留内存。在JNI里VmRSS应该是指JVM的内存,JNI的内存属于动态库的内存,算在了虚拟内存VmSize里,具体原因没有去探究。
脚本如下

#!/bin/bashnohup java -jar xxx.jar > nohup.log 2>&1 &pid=$!# 检查进程是否存在
if ! ps -p $pid > /dev/null; thenecho "进程ID $pid 不存在"exit 1
fi# 循环读取并打印内存信息,直到进程结束
while true; do# 读取/proc/pid/status中的VmSize和VmRSS字段vm_size=$(cat "/proc/$pid/status" | grep VmSize | awk '{print $2}')vm_rss=$(cat "/proc/$pid/status" | grep VmRSS | awk '{print $2}')# 打印内存信息echo "进程ID: $pid"echo "虚拟内存大小 (VmSize): $vm_size kB"echo "实际使用的物理内存 (VmRSS): $vm_rss kB"# 检查进程是否还在运行if ! ps -p $pid > /dev/null; thenecho "进程ID $pid 已经结束"breakfi# 等待一秒sleep 1
done

这样编译一个循环执行任务的测试程序,长期执行看内存有没有增长。

编译目标

maven 里引入ffmpeg-platform会把所有平台的包都拖下来,打包出来260M+,
参照 https://github.com/bytedeco/javacpp-presets 的readme,里面有一个链接指向了 https://github.com/bytedeco/javacpp-presets/wiki/Reducing-the-Number-of-Dependencies
执行

mvn -Djavacpp.platform.custom -Djavacpp.platform.host -Djavacpp.platform.macosx-x86_64 -Djavacpp.platform.windows-x86_64 package

在idea里使用 Execute Maven Goal 热编译在这里插入图片描述![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/94f933d94889456c840d090e03789a81.png
在这里插入图片描述
选择了三个平台,打包出来减小到69M

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com