问题标签 [heap-profiling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
546 浏览

c# - Visual Studio 2017 - 诊断工具 - 堆分析影响程序内存消耗

我正在尝试使用诊断工具和内存使用快照来调试 C# 应用程序(使用 c++/cli 和 c++)中奇怪的内存泄漏。但我发现了一个奇怪的问题。

当我在 VS2017 中运行调试并启用堆分析时,内存消耗是恒定的,并且程序按预期运行。当 Heap Profiling 关闭时,程序会泄漏线性增加的内存。完成的工作是相同的,我在控制台中打印了工作进度,我确信这两个程序都完成了相同的工作,但是一个使用恒定内存,另一个使用线性增加的内存(当相同的工作完成时使用 2 倍内存)。从视觉上看,当使用 Heap Profiling 触发 GC 时,会释放一些内存,而在不使用 Heap Profiling 时不会释放内存。

有谁知道堆分析如何影响这一点?本机内存泄漏。

[EDIT1] Performance Profiler 中的数据 -> 内存使用情况

0 投票
1 回答
66 浏览

c++ - 过滤堆跟踪数据的大小

我为我的应用程序录制了一个带有 heaptrack 的 *.gz 文件。我想用它来找出使用小分配浪费了多少内存。

现在我的问题是:是否可以过滤由 heaptrack 创建的 gz 或数据文件,以便只保留具有特定最大大小的分配?

问候

0 投票
1 回答
511 浏览

windows - TCMALLOC 内存泄漏

在 Windows 上,当我tcmalloc使用我的代码进行静态绑定时,我看到内存持续增长,但如果我不使用tcmalloc.

Linux 中不存在此问题。

我已经尝试过标志下面的标志:

当我使用这些变量时,我可以看到内存增长速度很慢,但是在多天的时间里,内存仍在不断增长。

我需要停止记忆增长。

0 投票
0 回答
123 浏览

haskell - 使用 -hy 进行 GHC 堆分析 - 什么是 ->、->>、->>>?

当我使用 -hy 标志(用于类型描述)分析我的程序的堆使用情况时,例如

我经常在结果中看到->a, ->>a->>>a其中a是另一种类型或*)。这是什么意思?

0 投票
1 回答
230 浏览

go - HTTP请求后如何使用pprof查看Web服务器的内存使用情况

net/http/pprof 的文档解释了如何创建一个 30 秒的 CPU 分析会话并分析结果。

这允许我发起一个或多个 HTTP 请求并查看我的 Web 应用程序的 CPU 利用率。

我看到了一条生成堆配置文件的路线,但由于配置文件不会发生在 30 秒窗口之类的时间里,所以我在概念上不确定它是如何与我的 Web 应用程序交互的。

如何“协调”堆分析器以使其与一个或多个 HTTP 请求相对应?

0 投票
1 回答
179 浏览

java - JProfiller HeapWalker:当保留大小计算被禁用时,此视图不可用

我是 JProfiler 的新手。我试图找出java中对象的保留和深度大小。但是,对于 Heap Walker 中的所有对象,我都得到了n/a。此外,当我尝试检查最大对象时,已显示以下消息。

当 jprofiler 禁用保留大小计算时,此视图不可用

我检查了分析设置,但找不到在那里启用/禁用保留大小计算的任何选项。

有人可以帮我在 Jprofiler 中解决这个问题吗?

提前致谢!

0 投票
0 回答
222 浏览

go - golang 分析正在运行的生产应用程序而无需重新启动

我有一个正在运行的生产 golang 应用程序。它有内存泄漏。需要找出原因。

如果我重新启动_ "net/http/pprof"问题可能不会再次发生。因为在 4 台服务器中只有这台服务器有这个问题

我想分析正在运行的服务器。从网上我读到 pprof 需要重新启动应用程序。

如何在不重新启动应用程序的情况下进行配置文件?

0 投票
1 回答
141 浏览

netbeans - 如何在 Netbeans 11 的分析器中将分析模式切换到内存模式?

我正在使用 Open JDK 11 在 Linux 64 位机器(32 GB RAM,8 个虚拟 CPU)上运行 Netbeans 11。我想分析一个应用程序(这是 SOLR 的索引器),因为经过长时间的生产运行后我得到Out Of Memory 错误,我看到已用内存(由操作系统报告)不断增加且从未减少。它从 8GB 开始,几天(有时是几周)后,达到 30GB 并引发 OOM(Java 堆空间)。

我无法在我的开发机器(16 GB 的 RAM,4 个 CPU)上重现这个 OOM,所以我决定使用 Netbeans 分析器,看看我是否能得到一些线索,了解导致 RAM 消耗随时间增加的原因。

我开始关注Netbeans 文章并在 2 个索引过程之后看到以下内容(实际上在生产服务器上,索引过程将无限地相互成功,但某些索引过程可能会持续数天或数周): 在我的项目中幸存几代

所以我猜我的应用程序中存在内存泄漏。到现在为止还挺好。但是在上面提到的 Netbeans 文章中,他们告诉您“将分析模式切换到内存模式”(在名为“发现源”的章节中)。但是我找不到在哪里切换到内存。这就是我的 GUI 的样子:

我的 Netbeans 分析器 GUI

如果我单击“配置文件对象”,那么我会看到与它们在文章中显示的内容相近的内容,但只有“实时字节”和“实时对象”。所以没有提到他们显示的“Generations”,右上角的小箭头也没有提供它作为选择(只有“Name”、“Live Bytes”、“Live objets”)。

对象分析

因此,我是否在正确的位置,如果是这样,我怎样才能获得其他列(“Avg Age”,“Generations”,...),然后我怎样才能转到导致源代码中内存泄漏的部分? 或者,也许有人可以建议另一篇更详细的(针对新手)文章/教程,介绍如何分析应用程序以查找内存泄漏?

非常感谢任何帮助:-)!

0 投票
1 回答
92 浏览

java - 为什么即使内存达到最大堆大小,JVM 也不会抛出内存不足错误?

我正在运行一个 Java 编程,它在 while 循环内的内存中创建更多对象。我将最大堆大小设置为 10MB。我正在看任务管理器,JVM 甚至在 10 MB 之后运行。我期待内存不足。但它不是抛出,而是在 while 循环中不断打印一条语句。

java -Xmx10m Main

谢谢

0 投票
1 回答
114 浏览

haskell - 如何分析使用 Cabal 构建的 TemplateHaskell?

完整项目位于https://github.com/ysangkok/cabal-profiling-issue

该项目包含由cabal init. 我现在将粘贴最有趣的源代码片段。

Main.hs我有:

TH.hs我有:

但是,如果我安装profiling: truecabal.project运行cabal buildGHC 8.6.5 和 Cabal 3.4.0.0(使用 ghcup 安装),我会得到:

代码有什么问题,为什么它在没有分析的情况下编译,但在启用时失败?