264.protobuf 有多耗内存?
Posted 每天一个开发小知识
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了264.protobuf 有多耗内存?相关的知识,希望对你有一定的参考价值。
每天一个开发小知识
前两天工作中遇到:
55M 的数据放到 protobuf 中
protobuf 占用的内存为 1.4G
总感觉 protobuf 不至于这么差
今天特意写个测试代码
test.proto
message TestPb
{
optional uint32 id = 1;
optional uint32 qid = 2;
};
// main.cpp
void TestPB()
{
uint32_t len = 1024 * 1024;
TestPb * pb = new TestPb[len];
for (uint32_t i = 0; i < len; ++i)
{
pb[i].set_id(100);
pb[i].set_qid(100);
}
cout << "sizeof(pb):" << sizeof(pb) << endl;
cout << "sizeof(TestPb):" << sizeof(TestPb) << endl;
sleep(10 * 60);
}
预估 40M 的数据放入 protobuf 中
实际内存为 30M
这个测试数据让我不得不怀疑
那天内存下降 1.4G 并不是 protobuf 引起的
不过
我现在也没有证据证明这个怀疑是否正确
每天一个开发小知识,今天你学废了吗?
以上是关于264.protobuf 有多耗内存?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段