无法找出资源不足错误的根本原因
Can't figure out the root cause of out of resources error
我有一个应用程序使用 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 策略文件的更改以避免此错误,其中 none 有效。
我想现在解决这个问题的最好方法是找出问题的根本原因,但是我遇到了困难,无法弄清楚它是否与 OS 相关,a内存泄漏,或者什么。
有谁知道是什么导致了我的 RTI DDS 问题?
在您的评论中,您表示您已解决问题。其他人了解它可能仍然有用,特别是考虑到情况取决于您使用的 Connext 版本。因此我在这里回答。
DynamicData() constructor for the com.rti.dds.dynamicdata.DynamicData
object has a parameter called type
of the class TypeCode
and a parameter called property
of the class DynamicDataProperty_t
。后者配置新创建对象的行为,特别是在内存分配和资源限制方面。
显然,您使用值 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
的默认值现在是 ResourceLimitsQosPolicy.LENGTH_UNLIMITED,表示缓冲区没有最大大小。
我有一个应用程序使用 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 策略文件的更改以避免此错误,其中 none 有效。
我想现在解决这个问题的最好方法是找出问题的根本原因,但是我遇到了困难,无法弄清楚它是否与 OS 相关,a内存泄漏,或者什么。
有谁知道是什么导致了我的 RTI DDS 问题?
在您的评论中,您表示您已解决问题。其他人了解它可能仍然有用,特别是考虑到情况取决于您使用的 Connext 版本。因此我在这里回答。
DynamicData() constructor for the com.rti.dds.dynamicdata.DynamicData
object has a parameter called type
of the class TypeCode
and a parameter called property
of the class DynamicDataProperty_t
。后者配置新创建对象的行为,特别是在内存分配和资源限制方面。
显然,您使用值 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
的默认值现在是 ResourceLimitsQosPolicy.LENGTH_UNLIMITED,表示缓冲区没有最大大小。