问题描述
我正在使用 Apache Arrow Java API,它访问直接内存。
我也在用Redis,当这个Java API访问直接内存时,Redis xstream在内存中继续增长。
我发现偶尔,Arrow会计算出以下操作的错误结果,
val isPhoneEnabled: CombinedLiveData<Boolean> = CombinedLiveData(emailInput,phoneInput) {
checkEnablity()
}
private fun checkEnablity(): Boolean {
return emailInput.value?.length ?: 0 > 6 &&
phoneInput.value?.length ?: 0 == 0
}
public static int bytesToInt(byte[] bytes) {
return ((bytes[3] & 255) << 24) +
((bytes[2] & 255) << 16) +
((bytes[1] & 255) << 8) +
((bytes[0] & 255));
}
而且我发现如果我重新启动Redis(删除所有以前的数据),错误会消失一段时间。否则,当我调用 Arrow 方法时,错误会更快发生。
重现很关键,根据我的经验,Arrow 直接内存访问应该很频繁,redis xstream 增长应该足够快。
所以我不是要求完全重现和解决问题,而是要问这两个内存访问是否有可能发生冲突?并且上述结果是否有合理的理论支持?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)