yanyiwu / cppjieba

"结巴"中文分词的C++版本
MIT License
2.57k stars 690 forks source link

cppJieba内部是否有内存释放逻辑? #175

Open zhangxistudy11 opened 1 year ago

cosmos-in-h2o commented 1 year ago

我自己试了一下运行前内存占用7.3g,运行时最大占用7.8g然后我写了一个system("pause");执行到这条语句后仍未回到7.3g关闭程序回到7.3g

byronhe commented 1 year ago

我用 darts 优化了一下 CppJieba 的内存占用,可以减少到原来的 1/100 : https://byronhe.com/post/2019/11/25/cppjieba-darts-DAT-memory_optimize/

代码在: https://github.com/byronhe/cppjieba

Sarah-Callies commented 1 year ago

我用 darts 优化了一下 CppJieba 的内存占用,可以减少到原来的 1/100 : https://byronhe.com/post/2019/11/25/cppjieba-darts-DAT-memory_optimize/

代码在: https://github.com/byronhe/cppjieba

您的代码我试了一下,无法make

[ 6%] Building CXX object deps/gtest/CMakeFiles/gtest.dir/src/gtest-all.cc.o [ 12%] Linking CXX static library libgtest.a [ 12%] Built target gtest [ 18%] Building CXX object test/CMakeFiles/demo.dir/demo.cpp.o [ 25%] Linking CXX executable ../demo CMakeFiles/demo.dir/demo.cpp.o:在函数‘cppjieba::CalcFileListMD5(std::string const&, unsigned long&)’中: ./cppjieba/include/cppjieba/DatTrie.hpp:368:对‘limonp::MD5::MD5()’未定义的引用 ./cppjieba/include/cppjieba/DatTrie.hpp:416:对‘limonp::MD5::Update(unsigned char*, unsigned int)’未定义的引用 ./cppjieba/include/cppjieba/DatTrie.hpp:425:对‘limonp::MD5::Final()’未定义的引用 collect2: error: ld returned 1 exit status make[2]: [demo] 错误 1 make[1]: [test/CMakeFiles/demo.dir/all] 错误 2

byronhe commented 1 year ago

用 test/make_demo.sh 来 make,deps/limonp/Md5.hpp 我拆到 deps/limonp/Md5.cpp 里面了。

Sarah-Callies commented 1 year ago

用 test/make_demo.sh 来 make,deps/limonp/Md5.hpp 我拆到 deps/limonp/Md5.cpp 里面了。

我集成后内存占用从原来的106M降到40M,为什么不是降到1%的1M呢?

byronhe commented 1 year ago

用 test/make_demo.sh 来 make,deps/limonp/Md5.hpp 我拆到 deps/limonp/Md5.cpp 里面了。

我集成后内存占用从原来的106M降到40M,为什么不是降到1%的1M呢?

可以用 jemalloc 的 heap profiler 查一下内存都是哪些数据结构在占用

Sarah-Callies commented 1 year ago

用 test/make_demo.sh 来 make,deps/limonp/Md5.hpp 我拆到 deps/limonp/Md5.cpp 里面了。

我集成后内存占用从原来的106M降到40M,为什么不是降到1%的1M呢?

可以用 jemalloc 的 heap profiler 查一下内存都是哪些数据结构在占用

那请问您得出的结论1%是怎么得出来的啊?

byronhe commented 1 year ago

这里有解释: https://byronhe.com/post/2019/11/25/cppjieba-darts-DAT-memory_optimize/