Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 在wp8 scheduledagent任务中消耗最多分配内存的protobuf_Windows Phone 8_Protobuf Net - Fatal编程技术网

Windows phone 8 在wp8 scheduledagent任务中消耗最多分配内存的protobuf

Windows phone 8 在wp8 scheduledagent任务中消耗最多分配内存的protobuf,windows-phone-8,protobuf-net,Windows Phone 8,Protobuf Net,我正在构建一个WP8,它有一个运行ScheduledAgent的后台任务。当任务运行时,它从独立存储加载一个使用protobuf序列化的对象图。类模型由大约10个类组成,其中一个head对象User包含其他类实例的列表。这不是一个简单的模型,但也不是太复杂 我的问题是,当图形恢复时,我分配的大部分内存被计划任务消耗了大约1MB的限制。我把罪魁祸首的范围缩小为protobuf本身。我假设关于类模型的运行时元信息消耗了大部分内存,但是调用FlushPool似乎根本没有帮助 恢复空对象图所消耗的内存与

我正在构建一个WP8,它有一个运行ScheduledAgent的后台任务。当任务运行时,它从独立存储加载一个使用protobuf序列化的对象图。类模型由大约10个类组成,其中一个head对象User包含其他类实例的列表。这不是一个简单的模型,但也不是太复杂

我的问题是,当图形恢复时,我分配的大部分内存被计划任务消耗了大约1MB的限制。我把罪魁祸首的范围缩小为protobuf本身。我假设关于类模型的运行时元信息消耗了大部分内存,但是调用FlushPool似乎根本没有帮助

恢复空对象图所消耗的内存与完全加载的对象所消耗的内存大致相同。我正在寻找任何可能的方法,清除protobuf内部保存的所有内存引用,然后调用GC.Collect,希望恢复到足以完成实际工作的程度。有什么不同的,然后冲洗工具


谢谢

任何额外的开销都可能来自完整构建的反射和元编程方面。好消息是如果是这样的话:您可以通过使用将所有元编程移动到构建步骤来删除所有这些。为了确保没有包含任何元编程代码,可以将CoreOnly构建与生成的序列化程序集一起使用。

我假设这是protobuf net,是吗?问:您使用的是完整版本,而不是仅使用CoreOnly和预编译工具?protobuf net。我使用的是完整版本。如果你怀疑元层中有很多信息,那么通过预编译切换到CoreOnly会完全删除所有这些信息,而且会让事情变得更快。值得一试吗?成功了!!!!非常感谢。非常有趣的是,我尝试使用netwonsoft/json.net来解决这个问题,但它的内存占用是相同的。我想知道实际问题是否不在wp8的反射库中。这不会让我感到惊讶。