标签: memory-profiling

Windows Phone分析 - 解析日志失败

我是内存分析Windows Phone应用程序的新手.停止内存分析会话后,Visual Studio会尝试解析日志,并使用"解析日志文件失败"消息进行故障转移.我看到%temp%目录中的"ProfilerLog_"文件并收到此消息:

System.ArgumentException: Item has already been added. Key in dictionary: '226295856'  Key being added: '226295856'
   at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add)
   at System.Collections.Hashtable.Add(Object key, Object value)
   at SilverlightProfiler.Internal.CFAdapter.HandleEvent(UInt32 eventID, ProbeMarkerType eventMarkerType, Double clockTime, Double threadTime, UInt32 threadID, ThreadType threadType, List`1 eventInfoList)
   at SilverlightProfiler.Internal.WPInputAdapter.HandleEvent(ProbeEventSource eventSource, UInt32 eventID, ProbeMarkerType eventMarkerType, Double clockTime, Double threadTime, UInt32 threadID, ThreadType threadType, List`1 eventInfoList)
   at SilverlightProfiler.Internal.WPInputAdapter.HandleEvent(BinaryReader input, Int64 endOffset, ThreadStreamInfo threadStreamInfo)
   at SilverlightProfiler.Internal.WPInputAdapter.HandleEvents()
   at SilverlightProfiler.Internal.WPInputAdapter.ParseLogFile(BinaryReader input, String logFilename, AgLogFileHeader header)
   at SilverlightProfiler.Internal.WPInputAdapter.Parse(Object data) …
Run Code Online (Sandbox Code Playgroud)

memory-profiling visual-studio windows-phone-7

5
推荐指数
1
解决办法
563
查看次数

Python中的内存使用:memory_profiler和guppy有什么区别?

我对特定python脚本的内存使用感到非常困惑.尽管有几个SO问题/ 答案的建议,我想我真的不知道如何描述用法.

我的问题是:之间什么区别?为什么一个人告诉我我正在使用大量的内存,另一个告诉我我不是?memory_profilerguppy.hpy

我正在使用pysam一个用于访问生物信息学SAM/BAM文件的库.当将SAM(ASCII)转换为BAM(二进制)并操纵其间的文件时,我的主脚本会快速耗尽内存.

我创建了一个小测试示例,以了解每一步分配多少内存.

# test_pysam.py: 

import pysam
#from guppy import hpy

TESTFILENAME = ('/projectnb/scv/yannpaul/MAR_CEJ082/' +
                'test.sam')
#H = hpy()

@profile # for memory_profiler
def samopen(filename):
#    H.setrelheap()
    samf = pysam.Samfile(filename)
#    print H.heap()
    pass


if __name__ == "__main__":
    samopen(TESTFILENAME)
Run Code Online (Sandbox Code Playgroud)

使用memory_profiler(python -m memory_profiler test_pysam.py)监视内存使用情况会产生以下输出:

Filename: test_pysam.py

Line #    Mem usage    Increment   Line Contents
================================================
    10                             @profile # for memory_profiler
    11                             def samopen(filename):
    12     10.48 MB      0.00 MB …
Run Code Online (Sandbox Code Playgroud)

python memory-profiling

5
推荐指数
1
解决办法
3926
查看次数

内存高效的Python批处理

我写了一个小的python批处理器,它加载二进制数据,执行numpy操作并存储结果.它消耗的内存比它应该多得多.我查看了类似的堆栈溢出讨论,并想要求进一步的建议.

背景

我将光谱数据转换为rgb.光谱数据存储在线段交错(BIL)图像文件中.这就是我逐行读取和处理数据的原因.我使用Spectral Python Library读取数据,它返回一个numpy数组.hyp是大型光谱文件的描述符:hyp.ncols = 1600,hyp.nrows = 3430,hyp.nbands = 160

import spectral
import numpy as np
import scipy

class CIE_converter (object):
   def __init__(self, cie):
       self.cie = cie

    def interpolateBand_to_cie_range(self, hyp, hyp_line):
       interp = scipy.interpolate.interp1d(hyp.bands.centers,hyp_line, kind='cubic',bounds_error=False, fill_value=0)
       return interp(self.cie[:,0])

    #@profile
    def spectrum2xyz(self, hyp):
       out = np.zeros((hyp.ncols,hyp.nrows,3))
       spec_line = hyp.read_subregion((0,1), (0,hyp.ncols)).squeeze()
       spec_line_int = self.interpolateBand_to_cie_range(hyp, spec_line)
       for ii in xrange(hyp.nrows):
          spec_line = hyp.read_subregion((ii,ii+1), (0,hyp.ncols)).squeeze()
          spec_line_int = self.interpolateBand_to_cie_range(hyp,spec_line)
          out[:,ii,:] = np.dot(spec_line_int,self.cie[:,1:4])
       return out
Run Code Online (Sandbox Code Playgroud)

记忆消耗

所有大数据都在循环外初始化.我天真的解释是内存消耗不应该增加(我是否使用了太多的Matlab?)有人能解释一下增加因子10吗?这不是线性的,因为hyp.nrows …

python memory-management numpy memory-profiling spectral

5
推荐指数
1
解决办法
1228
查看次数

无法绘制图形:需要使用matplotlib进行绘制

我能够生成* .dat文件:

vikas@server:~/memory_profiler-0.36$ ./mprof run --python test_sl.py 
vikas@server:~/memory_profiler-0.36$ ls *.dat
mprofile_20151001035123.dat
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试绘制图形时,它说“ matplotlib需要绘制”

vikas@server:~/memory_profiler-0.36$ ./mprof plot --output=plot.png 
matplotlib is needed for plotting.
Run Code Online (Sandbox Code Playgroud)

我有想念吗?

我正在分析的函数是其中的run():file_to_be_profiled.py

#!/usr/bin/python

import time
import os, sys, commands
from memory_profiler import profile
from guppy import hpy

@profile
def run():
    d = {}
    l = []
    hp = hpy()
    before = hp.heap()

    d["k1"] = 'val1'
    d["k2"] = 10
    count = 0
    while (count < 9):
        l.append(count)
        print 'The count is:', count
        count = count + 1
    print "Good …
Run Code Online (Sandbox Code Playgroud)

python graph matplotlib memory-profiling guppy

5
推荐指数
1
解决办法
1万
查看次数

在IPython内存分析期间报告的奇怪增量值

在查看Jake van der Plas的"Python数据科学手册"时,我正在重新创建各种调试和分析工具的使用示例.他提供了一个%mprun使用以下函数进行演示的示例:

def sum_of_lists(N):
    total = 0
    for i in range(5):
        L = [j ^ (j >> i) for j in range(N)]
        total += sum(L)
        del L
    return total
Run Code Online (Sandbox Code Playgroud)

我继续在Jupyter笔记本中执行它,并得到以下输出:

Line #    Mem usage    Increment   Line Contents
================================================
     1     81.3 MiB     81.3 MiB   def sum_of_lists(N):
     2     81.3 MiB      0.0 MiB       total = 0
     3     81.3 MiB      0.0 MiB       for i in range(5):
     4    113.2 MiB -51106533.7 MiB           L = [j ^ (j >> i) for j …
Run Code Online (Sandbox Code Playgroud)

python ipython memory-profiling jupyter

5
推荐指数
0
解决办法
409
查看次数

分析C应用程序中的最大内存使用情况 - linux

我正在为linux下的php开发C模块,我正试图找到一种方法可以帮助我通过最大内存峰值(使用率)来描述我的代码.

使用valgrind我可以在代码中获得总内存分配.但就像分配的内存一样,它来来往往;).我需要得到的是在C应用程序运行期间出现的最高内存使用量,因此我可以全面了解内存需求,并为优化代码提供一些测量点.

有谁知道任何有用的工具/技巧/良好做法?

c linux memory profiling memory-profiling

4
推荐指数
1
解决办法
1339
查看次数

Python:无法复制内存使用情况的测试

我试图在这里复制内存使用测试.

从本质上讲,帖子声称给出了以下代码片段:

import copy
import memory_profiler

@profile
def function():
    x = list(range(1000000))  # allocate a big list
    y = copy.deepcopy(x)
    del x
    return y

if __name__ == "__main__":
    function()
Run Code Online (Sandbox Code Playgroud)

调用

python -m memory_profiler memory-profile-me.py
Run Code Online (Sandbox Code Playgroud)

在64位计算机上打印

Filename: memory-profile-me.py

Line #    Mem usage    Increment   Line Contents
================================================
 4                             @profile
 5      9.11 MB      0.00 MB   def function():
 6     40.05 MB     30.94 MB       x = list(range(1000000)) # allocate a big list
 7     89.73 MB     49.68 MB       y = copy.deepcopy(x)
 8     82.10 MB …
Run Code Online (Sandbox Code Playgroud)

python memory memory-management memory-profiling

4
推荐指数
1
解决办法
162
查看次数

.NET 进程的内存转储中有大量无法解释的内存

我无法解释 C# 进程使用的大部分内存。总内存为 10 GB,但总可达和不可达对象总计为 2.5 GB。我想知道这些 7.5 GB 可能是什么?

我正在寻找最可能的解释或方法来找出这种记忆是什么。

这是确切的情况。进程是.NET 4.5.1。它从互联网下载页面并使用机器学习处理它们。内存几乎完全在托管堆中,如 VMMap 所示。这似乎排除了非托管内存泄漏。 在此处输入图片说明

这个过程已经运行了几天,内存慢慢增长。在某些时候,内存为 11 GB。我停止在这个过程中运行的一切。我多次运行垃圾收集,包括大对象堆压缩(间隔一分钟):

GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)

内存下降到 10 GB。然后我创建转储:

procdump -ma psid

正如预期的那样,转储为 10 GB。

我使用.NET 内存分析器(5.6 版)打开转储。转储显示总共 2.2 GB 可访问对象和 0.3 GB 不可访问对象。剩下的 7.5 GB 可以解释什么?

我一直在想的可能解释:

  • LOH 并没有真正被完全压实
  • 一些内存使用超出了分析器显示的对象

c# memory-profiling large-object-heap

4
推荐指数
1
解决办法
1391
查看次数

pprof 和 ps 之间的内存使用差异

我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况。该pprof工具显示如下,

Flat    Flat%   Sum%    Cum Cum%    Name    Inlined?
1.58GB  49.98%  49.98%  1.58GB  49.98%  os.ReadFile 
1.58GB  49.98%  99.95%  1.58GB  50.02%  github.com/bytedance/sonic.(*frozenConfig).Unmarshal    
0       0.00%   99.95%  3.16GB  100.00% runtime.main    
0       0.00%   99.95%  3.16GB  100.00% main.main   
0       0.00%   99.95%  3.16GB  100.00% github.com/spf13/cobra.(*Command).execute   
0       0.00%   99.95%  3.16GB  100.00% github.com/spf13/cobra.(*Command).ExecuteC  
0       0.00%   99.95%  3.16GB  100.00% github.com/spf13/cobra.(*Command).Execute   (inline)
0       0.00%   99.95%  3.16GB  100.00% github.com/mirantis/broker/misc.ParseUcpNodesInspect    
0       0.00%   99.95%  3.16GB  100.00% github.com/mirantis/broker/cmd.glob..func3  
0       0.00%   99.95%  3.16GB  100.00% github.com/mirantis/broker/cmd.getInfos 
0       0.00%   99.95%  3.16GB  100.00% …
Run Code Online (Sandbox Code Playgroud)

linux go memory-profiling pprof heap-profiling

4
推荐指数
1
解决办法
2195
查看次数

如何运行独立的 Eclipse MAT?

我使用 jmap 生成了 hprof。

sudo ~/jdk/bin/jmap -F -dump:file=app.hprof 5003  
Run Code Online (Sandbox Code Playgroud)

现在,我在 Eclipse 中解析 *.hprof 时遇到 OOM /“Java Heap Space”错误。我想我需要将其作为独立运行。

我该如何运行它?有参考资料吗?

java eclipse memory-profiling

3
推荐指数
1
解决办法
9157
查看次数