[英]Linux c application memory usage
您应该首先使用valgrind (以调试潜在的难以发现的内存泄漏或异常行为)。 不要忘记使用gcc -Wall -g
进行编译(然后,在工作时使用-Wall -O
); 当然,请改进代码,直到没有任何警告。
您可能(如果算法合适)尝试(有用地)分配例如2的幂或3的2的幂(可能减去2或3个字)的存储区; 至少要尝试避免分配太多不同的随机大小。
您可能需要使用尝试贝姆保守的垃圾收集器 -即替换所有malloc
与GC_MALLOC
(或GC_MALLOC_ATOMIC
及strdup
与GC_STRDUP
),你的free
与GC_FREE
,等...
至少出于测试目的,也许通过内置的bash ulimit使用setrlimit(2) 。 你想RLIMIT_AS
-可能与RLIMIT_DATA
(设置这些限制明智地避免了OOM杀手,让您的mmap
通过-called malloc
-当内存耗尽失败)。
您可能需要使用接受-fsanitize = address的 GCC 4.8进行编译。
您还可以实现自己的特定于应用程序的垃圾收集器 (请阅读该Wiki页面,它为您提供了见解和术语); 标记和紧凑算法将解决碎片问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.