2015-04-27 71 views
0

我们有一些由其他团队和第三方提供商编写的应用程序,服务和库。我们需要优化这些应用程序和服务的内存使用情况。问题是我们没有太多有关应用程序内部的信息。当然,我们有一个源代码和权利来修改我们想要的任何东西,但要深入了解未知应用程序的内部是非常困难的。 所以我们的主题是讨论和分享如何开始的想法以及我们可以使用哪种方法和工具。优化应用程序内存使用情况

我们有valgrind和heaptrack来报告内存泄漏和整体分配。 我们正在考虑使用一些静态代码分析。

我想应该有人做过这样的事情。听到别人用于这个目的以及你能达到什么目的,真是太棒了。

任何有用的信息表示赞赏。

回答

1

除非您的应用程序是一些非常奇特的低延迟UDP服务,无法容忍延长的延迟情况,您可以使用Valgrind轻松跟踪您的泄漏和不理想的内存分配情况。

Valgrind Memcheck开始,这将帮助您刷出内存泄漏,然后继续Valgrind Massif,这将帮助您了解程序的哪些部分分配了大部分堆内存。

如果您确实是一个穷人调试低延迟消息传递应用程序,您仍然可以通过覆盖自己的malloc/realloc/free(例如LD_PRELOAD here)来实现,例如,在应用程序的大小增长时放弃应用程序当调用栈符合某些标准时,超出一定的限制。你甚至可以插入libunwind并缓存/打印前N个分配堆栈(就像他们在OpenJDK中的heapTracker中做的那样,它是java,但它的想法是相同的)。

+0

谢谢。其实这是这个计划,但我想也可能有其他的想法。 – incognito

相关问题