繁体   English   中英

优化应用程序内存使用率

[英]Optimize application memory usage

我们有一些由其他团队和第三方提供商编写的应用程序,服务和库。 我们需要为那些应用程序和服务优化内存使用率。 问题在于我们没有太多有关应用程序内部的信息。 当然,我们有源代码和修改任何我们想要的权限的权利,但是要深入研究未知应用程序的内部非常困难。 因此,主题是讨论和共享有关如何开始以及我们可以使用哪种方法和工具的想法。

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

我想应该已经有人做过这样的事情了。 很高兴听到其他人为此目的使用了什么,以及您能够实现的目标。

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

除非您的应用程序是低延迟UDP服务的一种非常特殊的情况,这种情况无法忍受增加的延迟,否则您可以使用Valgrind轻松跟踪泄漏和次优内存分配。

Valgrind Memcheck开始,它将帮助您消除内存泄漏,然后从Valgrind Massif继续,这将帮助您了解程序的哪些部分分配了最多的堆内存。

如果您确实是一个调试低延迟的消息传递应用程序的穷人,您仍然可以通过重写malloc / realloc / free(例如此处的 LD_PRELOAD)来解决问题,例如,当应用程序的大小超过特定限制时中止应用程序,当调用堆栈满足某些条件时。 您甚至可以插入libunwind并缓存/打印前N个正在分配的堆栈(就像它们在OpenJDK的heapTracker中所做的一样,它是Java,但想法是相同的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM