问题标签 [memory-footprint]

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 回答
342 浏览

c++ - 内存占用分析

假设我有一个用 C/C++ 编写的程序,我想知道有多少内存用于数据(堆、堆栈)以及有多少内存用于代码(库、可执行文件等)。

我曾经测量过使用“valgrind”使用的动态内存空间,但我认为它没有分析数据和代码的内存占用的功能。

平台:Mac(可能是 Linux)

0 投票
2 回答
10826 浏览

c# - 在 C# 应用程序中查找内存泄漏

我在 C# 框架 4 中有一个应用程序。基本上,这个应用程序主要对事件做出反应并创建对象,释放它们,创建数据库连接并关闭它们。

现在,我们已经看到应用程序的进程有时会以非常奇怪的方式增长。我们有两种不同的行为:

  1. 当应用程序“应该”保持在 500 MB 左右时,应用程序会不断增长,直到达到 4 GB 的 RAM。结果->它崩溃了!
  2. 应用程序缓慢增长到 1200 MB(30 分钟),然后突然缩小到 500 MB(在一秒钟内)......这个过程不时重复。这可以是垃圾收集器吗?

现在,为了向我们提供有关应用程序的更多信息,我想在我们的日志文件中添加应用程序进程的大小。是否可以通过本机框架?是否可以在 C# 中知道对象的大小?

我还找到了应用程序 NetMemoryProfiler4,但如果可能的话,我更愿意使用嵌入式日志记录!

0 投票
1 回答
777 浏览

windows-8 - Windows 8 应用商店应用程序 - 内存占用太高

我正在构建一个 WinJS Windows 8 Store 应用程序,并且我在保持“内存占用”低时遇到问题,因为目前它无法通过“HTML5 应用程序的性能分析器”:

内存占用

应用程序在使用少量内存时运行得更好。应用程序的内存占用应小于 60MB。要减少应用程序的内存占用,请避免保留对不再需要的对象(例如图像或 blob)的引用。

结果:应用参考集为112MB;工作集为 98MB。这超过了 80MB 参考集最大值和 80MB 工作集最大故障阈值。

我正在寻找有关如何处理此问题的任何提示,但我看不到这 112MB 的来源,在任务管理器中查看,我的应用程序从未超过约 50MB。

谢谢!

如果您需要更多信息,请询问,不知道该提供什么。

0 投票
1 回答
76 浏览

c# - 与字典不同的选项

我做了一个程序,它的核心是一个键盘钩子。我按下一个特定的按钮,它会执行一个特定的动作。由于我可以使用组合框选择相当多的选项列表,因此我决定制作一个名为 ECCMDS 的字典(代表嵌入式控制器命令)。然后我可以将我的 Combobox 项目设置为 ECCMDS.Keys 并按名称通过命令进行选择。也便于保存,因为它是一个字符串,我只是将它保存到 XML 文件中。好吧,该程序可以监视 4-8 个按钮。问题来自运行时。该程序使用大约 53 兆内存(当然我现在查看它,它说 16 兆:/) 运行它的平板电脑有 3 Gb 的内存和一个 Atom 处理器。通常我会嘲笑53megs,

因此,尽管 Dictionary 大大降低了我的 RunCommand 方法的复杂性,但我想知道内存使用情况。这台处于空闲状态的平板电脑使用了 80% 的内存,所以我想尽可能减少对它的影响。这个问题还有其他解决方案吗?这是字典的一个小例子

是否可以使用反射或其他方法来实现这一目标?

编辑

因此,在制作一个新程序并比较两种方法的好建议之后,我确定它不是我的字典。我不认为 WPF 在 Winforms 之间有那么大的区别,但它必须是。新程序几乎没有任何图片(和以前一样,现在我的大部分图形都生成了)但结果如下

0 投票
4 回答
104 浏览

java - 我需要在使用尽可能少的内存的同时快速找到对象。我应该使用什么数据容器?

我的程序需要向数据容器中插入超过数百万条记录。我尝试了 hashmaptreemap。尽管我允许JVM 使用 2gb ram,但两者都会给我堆空间异常。

我的程序经常从容器中获取特定数据,我认为如果需要 O(logn) 时间,我可以接受。那么我应该使用什么容器呢?或者我需要实施一个?如何?

更多细节:键是字符串,就像一个全局ID,例如“00011123459”之类的。然后键将映射到列表列表,即List<List<String>>。我的程序从文件中读取行,然后将行更改为列表,然后从列表中获取全局ID,然后将列表放入相应的列表列表中。该文件有超过数百万行,这就是为什么我认为主要原因是我创建了太多列表。但是,我无法向机器添加更多内存。

0 投票
0 回答
1301 浏览

c - bss 部分大小计算

以下是 a.out 上 size 的输出

当我对所有使用的单个 obj 和库的大小输出进行总计时

我可以理解实际可执行文件中的文本大小小于总大小(库 + main.o),因为实际可执行文件不包含库中未使用函数的文本部分。

我的问题是为什么最终可执行文件中的 bss 部分很大(~9MB),当我总计库和 main.o 的 bss 部分的总和时,它是~23k。

如何找到,where(files) 是在可执行文件中分配的这个巨大的 bss 部分。

我正在使用 ubuntu 13.04,gcc。

任何帮助表示赞赏。

0 投票
1 回答
52 浏览

list - 托管内存 C#

我正在运行 VS2013 来分析我的应用程序的转储,以查找内存中的大对象。到目前为止一切顺利,我能够识别哪些是使用内存的对象。

现在,一个问题,我看到我的一个列表对象 (List) 存储图像的 ushort 数据,然后我看到下面的实际 Uint16 对象大小几乎相同。

看截图...

这是否意味着我的对象使用“双内存”?在此处输入图像描述

0 投票
1 回答
1659 浏览

xcode - 使用 XCode Instruments 分析 OS X 上的 CPU 或内存使用情况,还有其他可能性吗?

我正在使用XCodeInstruments 来分析我的cpumemory的系统性能使用情况。

当我记录使用情况时,尤其是“2 分钟”,我得到每个进程的CPU/内存使用情况“120”(2 分钟 x 60 秒,每秒 1 个值)值。是否可以获得每个进程关于他的“120” cpu/内存使用值的平均值? 仪器将日志保存在文件中,是否可以将日志保存在文本文件中以获取人类可读文件中的所有值?XCode.trace

还有其他方法可以解决我的问题吗?也许用python 脚本

想要的只是. _ 例如,我正在使用谷歌浏览器“10”分钟,现在我想要这“10”分钟内cpu内存使用的平均百分比值。time interval

0 投票
1 回答
1144 浏览

java - Java 的反射如何影响其内存占用?

Java 程序使用比 C++ 程序更多的内存似乎是一个既定事实。根据StackExchange 上的回答,这是由于垃圾收集的性质和 Java 的“二进制文件”的字节码性质。但是反射在这种情况下起什么作用呢?

在 Java 中,可以以纯文本的形式枚举和调用类的变量和方法,这些是在运行时提供的。为此,有一些存储的元数据将这些字符串键与其各自的属性链接起来。

这个元数据是否存储在堆上,如果是,有没有办法为我不需要反射的类禁用它?(普通旧数据)

0 投票
2 回答
819 浏览

java - 从 jvm 中检索内存使用情况和 CPU 使用情况

我想编写 Java 代码来获取在本地主机上运行的 Java 服务器的内存和 CPU 使用率。如果我可以像在 jconsole 中那样通过 PID(进程 ID)获取值会更好。我怎样才能做到这一点?我是 Java 新手,我对这些事情的经验较少。