SetProperty分配内存,导致垃圾收集器

时间:2015-04-23 09:06:18

标签: c# parse-platform

Parse(Unity SDK)是否会在每次设置值时分配内存?例如,Parse示例是:

ParseObject gameScore = new ParseObject("GameScore");
gameScore["score"] = 1337;

以下代码分配内存(在编辑器中为1.3KB,在设备上略小,约为0.6KB)。

gameScore["score"] = 1337;

虽然分配的内存很小,但是定期设置值(我们在游戏中执行的操作)会导致垃圾收集器被调用,从而导致帧速率出现明显的峰值。我尝试过对ParseObject进行子类化并通过SetProperty设置值,但这基本上就是上面的代码所做的,所以结果是一样的。

编辑:我正在使用Unity Profiler来测量这些值。请注意,数据类型似乎不会影响分配的内存量。

我设置了一个只有一个执行以下操作的脚本的空场景:

void Update () 
{
    gameScore["score"] = 1337;
}

这是Unity Editor中该操作的结果。每一帧都会发生这种情况:

Break down of setting value in ParseObject

1 个答案:

答案 0 :(得分:0)

也许您需要使用struct而不是classclass在堆上获取内存分配。