无法找出资源缺失的根本原因

时间:2016-02-18 18:53:36

标签: resources messaging qos data-distribution-service

我有一个使用 RTI DDS 的应用程序,使用dynamic data来设置我的消息。

当我尝试在文件中发送300kb的字符串时,我收到以下错误代码:

com.rti.dds.infrastructure.RETCODE_OUT_OF_RESOURCES
    at com.rti.dds.util.Utilities.rethrow(Unknown Source) ~[nddsjava.jar:?]
    at com.rti.dds.infrastructure.RETCODE_ERROR.check_return_codeI(Unknown Source) ~[nddsjava.jar:?]
    at com.rti.dds.dynamicdata.DynamicData.set_string(Unknown Source) ~[nddsjava.jar:?]

我在他们的论坛上搜索并尝试了我能想到的所有更改到我的QOS策略文件以避免此错误,其中没有一个有效。

我认为现在解决这个问题的最佳方法是找到问题的根本原因,但是我已经遇到了障碍,无法弄清楚它是否与操作系统相关,内存泄漏或者是什么。

有没有人知道RTI DDS可能导致我这个问题?

1 个答案:

答案 0 :(得分:1)

在您的评论中,您表示您已解决了问题。对其他人来说,了解它也可能仍然有用,特别是考虑到情况取决于您使用的Connext版本。因此我在这里回答。

DynamicData()对象的com.rti.dds.dynamicdata.DynamicData构造函数具有类TypeCode的名为type的参数和类{{3}的名为property的参数}}。后者配置新创建的对象的行为,特别是在内存分配和资源限制方面。

显然,您使用值com.rti.dds.dynamicdata.DYNAMIC_DATA_PROPERTY_DEFAULT作为property参数。对于旧版本的RTI产品(在5.2.0之前),这意味着buffer_max_size属性设置为65536字节的值。这对您的对象来说还不够,结果会出现RETCODE_OUT_OF_RESOURCES异常。解决方案是传递属性对象的实例化,并将buffer_max_size设置为足够大的值。

对于产品的当前版本,不再需要此版本。 buffer_max_size的默认值现在为DynamicDataProperty_t,表示缓冲区没有最大大小。