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

内存监控

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

脚本如下

shell 复制代码
#!/bin/bash

nohup java -jar xxx.jar > nohup.log 2>&1 &

pid=$!

# 检查进程是否存在
if ! ps -p $pid > /dev/null; then
    echo "进程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; then
        echo "进程ID $pid 已经结束"
        break
    fi

    # 等待一秒
    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

相关推荐
h***06651 分钟前
java进阶知识点
java·开发语言
oMcLin2 分钟前
如何在 Debian 11 上配置并调优 Tomcat 应用服务器,支持高并发 Java 应用的流畅运行
java·tomcat·debian
什么都不会的Tristan6 分钟前
MybatisPlus-快速入门
java·开发语言
无心水6 分钟前
【分布式利器:腾讯TSF】2、腾讯微服务框架TSF实战指南:Spring Boot零侵入接入与容器化部署全流程
java·spring boot·分布式·微服务·springcloud·分布式利器·腾讯tsf
sxlishaobin12 分钟前
设计模式之享元模式
java·设计模式·享元模式
黎明晓月14 分钟前
Redis容器化(Docker)
java·redis·docker
Wpa.wk15 分钟前
接口自动化测试 - REST-assure小练习(Java版-分层)
java·开发语言·经验分享·python·自动化·接口自动化·po
予枫的编程笔记15 分钟前
深度解析Logstash与Beats:Elastic Stack数据采集处理双核心
java·elasticsearch·logstash·beats
qq_124987075316 分钟前
基于Java的游泳馆管理系统(源码+论文+部署+安装)
java·开发语言·毕业设计·springboot·计算机毕业设计
m0_5981772317 分钟前
MYSQL开发- (1)
android·java·mysql