You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用predict时bartMachine对象出现jobjRef类无效错误求助

BART模型预测时jobjRef报错排查方案

问题场景

编写的R脚本如下:

#options(java.parameters = "-Xmx50000m")
library(bartMachine)
library(tidyverse)

data <- data.frame(x=rnorm(100, 5, 2), 
                   z=rnorm(100, 1, 0.5), 
                   y=as.factor(rep(c("a", "b"), 100)))

model <-  bartMachine(X= data[,c("x", "z")],
                           y= data$y, seed = 999,
                           serialize = T)

test <- data.frame(x=rnorm(1000, 5, 2.5), 
                   z=rnorm(1000, 1, 0.7))

pred <- predict(model, test)

在真实业务场景调用predict函数时触发错误:

Error in validObject(.Object) :
invalid class “jobjRef” object: invalid object for slot "jobj" in class "jobjRef": got class "NULL", should be or extend class "externalptr"

该问题无法在测试环境复现,且公开资料中相关解决方案较少。

可能原因及解决办法

  • JVM连接丢失:bartMachine依赖Java实现核心逻辑,jobjRef是R与Java对象的引用,报错说明模型的Java对象引用已变为NULL,多因JVM内存不足或意外中断导致。

    • 取消脚本开头options(java.parameters = "-Xmx50000m")的注释,增大JVM堆内存分配;
    • 重新加载bartMachine包并重新训练模型,重建R与JVM的连接;
    • 检查业务环境内存占用情况,避免其他程序耗尽内存导致JVM被强制终止。
  • 模型序列化损坏:脚本中设置了serialize = T,序列化后的模型在存储或跨环境加载时可能出现损坏。

    • 尝试移除serialize = T参数训练模型,在同一会话内测试预测功能;
    • 若需持久化模型,改用saveRDS()和readRDS()保存/加载模型,确保对象完整性;
    • 检查模型存储路径的磁盘状态,排除写入错误导致的文件损坏。
  • 环境版本不兼容:业务环境与测试环境的R、bartMachine或Java版本不一致,引发兼容性问题。

    • 统一业务环境与测试环境的R版本、bartMachine包版本;
    • 确认Java版本符合bartMachine要求(推荐Java 8及以上,避免使用过高版本);
    • 重新安装bartMachine包,确保依赖的Java组件正确部署。

参考案例

此前有用户在类似云环境场景中遇到相同报错,核心原因是会话中JVM不稳定、内存不足导致Java对象引用丢失,通过以下操作解决:

  • 增大JVM内存分配;
  • 重新初始化R会话并重新训练模型;
  • 避免复用长时间运行会话中的旧模型对象。

内容的提问来源于stack exchange,提问作者EML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:12:59