我正在编写一个应用程序,我很惊讶它的总内存使用量已经太高了.我想分析我的应用程序的动态内存使用情况:堆中有多少个对象,以及哪些函数创建了这些对象?此外,每个对象使用了多少内存?
有一个简单的方法吗?我正在研究linux和windows,所以任何平台的工具都足够了.
注意:我不关心这里的内存泄漏.
在执行优化之前,每个人总是说要对程序进行概要分析,但没有人描述过如何执行优化.
您对C代码进行分析的做法是什么?
我只是没有得到traceview输出的各种元素,我找不到教程.有人可以参考下图解释以下内容:

我正在运行一个长期存在的Haskell程序,它可以保留大量内存.运行+RTS -N5 -s -A25M(我的L3缓存的大小)我看到:
715,584,711,208 bytes allocated in the heap
390,936,909,408 bytes copied during GC
4,731,021,848 bytes maximum residency (745 sample(s))
76,081,048 bytes maximum slop
7146 MB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 24103 colls, 24103 par 240.99s 104.44s 0.0043s 0.0603s
Gen 1 745 colls, 744 par 2820.18s 619.27s 0.8312s 1.3200s
Parallel GC work balance: 50.36% (serial 0%, perfect 100%)
TASKS: 18 (1 bound, 17 …Run Code Online (Sandbox Code Playgroud) 我可以使用VS 2010 Profiler来配置单元测试(MSTest)吗?如果有,怎么样?
谢谢,迈克尔
我有一些SQL正在运行,并且需要很长时间才能在asp.net c#应用程序中返回结果/解析/显示等.
我安装了SQL Server Management Studio 2008 R2以连接到远程SQL Server 2000计算机.是否有查询分析器或分析器我可以用来查看最新情况?我不确定我是否发送了太多请求,如果请求花费的时间太长,如果有额外的索引我可以添加以加快速度等等.
编辑:
有哪些免费工具可以替代Microsoft工具?
我想知道在调用函数期间分配的最大RAM量是多少(在Python中).关于跟踪RAM使用的SO还有其他问题:
但是那些似乎允许你在heap()调用方法(在guppy的情况下)时更多地跟踪内存使用情况.但是,我想要跟踪的是外部库中的一个函数,我无法修改它,并且它会增长以使用大量的RAM,但是一旦函数执行完成就会释放它.有没有办法找出函数调用期间使用的RAM总量是多少?
我创建了一个使用150mb内存(私有字节)的ac#应用程序,主要是因为一个很大的字典:
Dictionary<string, int> Txns = new Dictionary<string, int>();
Run Code Online (Sandbox Code Playgroud)
我想知道如何释放这个记忆.我试过这个:
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有对我的私人字节造成太大影响 - 他们从155mb减少到145mb.有线索吗?
谢谢
-编辑-
好吧,我对这段代码运气不错(它将私有字节减少到50mb),但为什么呢?
Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
-编辑-
对于那些说'不要使用GC.collect'的人来说,这是公平的(我不打算辩论,除了说你可以看到我的C背景通过),但它并没有真正回答我的问题:如果我先清除事务列表,为什么垃圾收集器只释放内存?它不应该释放内存,因为字典已被解除引用?
我正在分析MongoDB中的数据库查询.我按照这个链接.我试图从集合system.profile中删除所有数据,以便我可以再次开始对不同的查询进行基准测试.我尝试了以下代码,但它给出了一个错误
控制台语法
> db.system.profile.remove({})
Run Code Online (Sandbox Code Playgroud)
错误
cannot delete from system namespace
Run Code Online (Sandbox Code Playgroud)
如何删除该集合中的所有数据?如果那是不可能的,我怎么能从头开始分析?