Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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
在添加boost::serialization之后,编译大型类层次结构会消耗大量内存 我们需要对大量C++类层次结构进行序列化,继承、收缩、共享指针等。我决定使用 Boo::序列化< /代码>库。< /P>_C++_Visual Studio 2008_Templates_Serialization_Boost - Fatal编程技术网

在添加boost::serialization之后,编译大型类层次结构会消耗大量内存 我们需要对大量C++类层次结构进行序列化,继承、收缩、共享指针等。我决定使用 Boo::序列化< /代码>库。< /P>

在添加boost::serialization之后,编译大型类层次结构会消耗大量内存 我们需要对大量C++类层次结构进行序列化,继承、收缩、共享指针等。我决定使用 Boo::序列化< /代码>库。< /P>,c++,visual-studio-2008,templates,serialization,boost,C++,Visual Studio 2008,Templates,Serialization,Boost,我的问题是,在VS2008cl上编译这个库时占用了超过1GB的RAM内存。我想这是由Boost中基于模板的序列化引起的。这会导致在较弱的PC上构建整个项目时出现许多问题。有趣的是,编译时间不会太长: no serialization: 15:38 [mm:ss] serialization: 17:06 [mm:ss] 我的问题是:有可能减少内存使用吗?也许编译时间更长 编辑 在编译C++/CLI项目的过程中,使用的内存会在多个文件中增加,该项目实际上使用了上述库中的序列化。在没有序列化

我的问题是,在VS2008
cl
上编译这个库时占用了超过1GB的RAM内存。我想这是由Boost中基于模板的序列化引起的。这会导致在较弱的PC上构建整个项目时出现许多问题。有趣的是,编译时间不会太长:

no serialization: 15:38 [mm:ss]
serialization:    17:06 [mm:ss]
我的问题是:有可能减少内存使用吗?也许编译时间更长

编辑
在编译C++/CLI项目的过程中,使用的内存会在多个文件中增加,该项目实际上使用了上述库中的序列化。在没有序列化的情况下,
cl.exe
在最大文件上的峰值内存约为150 MB,通常不超过80 MB。一些文件的内存使用量增加了4到8倍。

我在使用boost::serialization时遇到了同样的问题。可能唯一的解决办法是将这个巨大的类拆分成更多封装的部分。对于代码中的某些类,我还编写了应用程序类和序列化程序之间的层。该层简化了要保存的数据的结构。它甚至分离了一个更大的“数据”部分,并使用libz(zip库)保存它,而不是到处使用序列化。

您应该包括没有序列化库时cl占用的内存量。由于在构建过程中为每个cpp文件启动了一个cl.exe,您应该检查哪个cpp文件使用的内存最多。