应调大jvm堆内存、启用g1垃圾回收器、限制模型加载规模并配置堆外内存上限。具体包括:将-xms/-xmx设为2048m/4096m,添加-xx:+useg1gc等参数,启用on-demand模型加载,设置-xx:maxdirectmemorysize=1024m。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在部署WorkBuddy时遇到“OutOfMemoryError”提示,则很可能是JVM堆内存配置不足,无法支撑AI模型加载、多任务缓存及文档解析等高内存消耗操作。以下是针对性的解决步骤:
一、调整JVM堆内存启动参数
WorkBuddy默认JVM堆大小可能过低(如-Xms512m -Xmx1024m),在加载大模型或并行处理多个PDF/Excel文件时极易触发堆溢出。需手动扩大初始与最大堆容量,并确保二者比例合理以减少GC频率。
1、定位WorkBuddy的启动脚本:Windows系统查找workbuddy.exe.vmoptions或WorkBuddy.bat;macOS/Linux系统查找workbuddy.vmoptions或start.sh中的JAVA_OPTS字段。
2、备份原文件后,用文本编辑器打开该配置文件。
3、查找包含-Xms和-Xmx的行,将其修改为:-Xms2048m -Xmx4096m(建议最小值不低于2GB,最大值不超过物理内存的50%)。
4、若存在-XX:MaxMetaspaceSize参数,同步调整为-XX:MaxMetaspaceSize=512m,防止元空间耗尽。
5、保存文件,彻底关闭所有WorkBuddy进程(包括后台服务),重新启动应用。
二、启用G1垃圾回收器并优化GC策略
G1收集器相比默认的Parallel GC更适合WorkBuddy这类长周期、多线程、堆内存较大的Java应用,能降低停顿时间并提升内存利用率。
1、在同一启动配置文件中,新增一行JVM参数:-XX:+UseG1GC -XX:MaxGCPauseMillis=200。
2、添加并发标记触发阈值:-XX:InitiatingOccupancyFraction=45,使G1在堆使用率达45%时即启动并发标记,避免突发性Full GC。
3、禁用显式GC调用,防止代码中System.gc()干扰自动回收节奏:-XX:+DisableExplicitGC。
WorkBuddy 桌宠工厂 —— 给一张角色图、一个 codex.pet 链接、一条 codex-pets.net 下载 URL、或一份现成的精灵表,就能自动创建一只可联动 WorkBuddy 状态的桌面宠物。当用户说"创建桌宠"、"做一只桌宠"、"用这张图做桌宠"、"从 codex.pet 安装桌宠"、"导入 codex 桌宠 XX"、"装一下 codex-pets.net 上的 XX&quo
4、保存配置,重启WorkBuddy并观察日志中GC行为是否趋于平稳。
三、限制模型加载规模与启用流式推理
WorkBuddy在初始化阶段会预加载NLP与OCR子模型,若未加约束,可能一次性占用超3GB堆内存。通过运行时参数可强制启用按需加载与分块处理机制。
1、在启动脚本的JAVA_OPTS中追加:-Dworkbuddy.model.load.strategy=on-demand。
2、对文档解析类任务,添加流控参数:-Dworkbuddy.doc.chunk.size=8192(单位字节),将大文件切片处理,避免单次载入整页PDF或百页Word。
3、若仅需基础文本处理,关闭视觉模型加载:-Dworkbuddy.vision.enabled=false。
4、重启应用后,在首选项→「AI引擎」中确认模型状态显示为“按需激活”,且内存监控曲线无尖峰突起。
四、配置堆外内存(Direct Memory)上限
WorkBuddy使用Netty与JNI调用部分本地库,涉及大量堆外内存分配(如图像缓冲区、NIO ByteBuffer)。若未设限,堆外内存持续增长将引发OutOfMemoryError: Direct buffer memory。
1、在JVM启动参数中加入堆外内存控制项:-XX:MaxDirectMemorySize=1024m。
2、确保该值不高于JVM最大堆内存的25%,且总和(堆+堆外)不超过系统可用RAM的70%。
3、若应用日志中出现java.lang.OutOfMemoryError: Direct buffer memory,立即检查此项是否生效。
4、重启WorkBuddy,使用jstat -gc PID命令验证CCST(压缩类空间)与DCMS(直接内存统计)指标是否稳定。










