【问题标题】:size in Memory of handle object property句柄对象属性内存中的大小
【发布时间】:2013-07-22 18:19:24
【问题描述】:

您好,我正在使用具有超类 dynamicprops 和 matlab.mixin.Copyable 的对象

现在我想知道每个动态属性的大小(内存大小)。我尝试了诸如whos和getfield之类的东西。但我似乎很难找到一些东西。

我知道人们为了得到这个句柄对象而苦苦挣扎,这就是其中之一……但我想知道是否有人对此有解决方案。

你的 马古_

【问题讨论】:

    标签: matlab oop memory properties dynamic-properties


    【解决方案1】:

    您可以使用properties 函数获取对象公开的属性列表。使用metaclass 也可以做到这一点。然后,您可以遍历它们并使用 x.(p) 语法按名称访问每个 (dynamic field names)。您可以像处理任何其他变量(size/classwhos)一样确定内存大小。

    请注意,如果属性本身是容器(对象、结构、单元格数组),您可能需要递归遍历属性。

    【讨论】:

    • 谢谢你的答案,但我不确定这是否真的得到了所有信息。此代码:清除所有 n = 1e6; A = 细胞(1,n);谁是 A B = A;对于 i=1:n B{i} = 1;结束 whos B C = zeros(1,n);谁的 C 产生 A = 4MB; B = 68 MB; C = 8 MB。某处必须有一些开销,这意味着 Cell 需要的不仅仅是结构本身 + 数据。我认为 Matlab 使用一些 mxArray 信息来存储它是哪种数据类型。也许剩下的就是这个
    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2012-03-08
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多