问题标签 [heap-memory]

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 投票
5 回答
3011 浏览

java - 如何修复 Java 堆的大小

我知道 Java VM 有“-XMx”和“-XMs”来设置堆的大小。它还有一个叫做“人机工程学”的特性,可以智能地调整堆的大小。但是,我手头有一个问题,需要严格固定大小的堆。

这是命令行参数:

但是,通过观察 GC 日志,似乎堆的大小并没有固定在 2048K。参见,例如 2368K、2432K、2176K 等:

有没有办法对 Java 堆进行“严格的 大小调整”(不多不少)?

0 投票
5 回答
4693 浏览

c++ - 对象列表应该存储在堆还是栈上?

我有一个对象(A),它有一个由对象(B)组成的列表。list(B) 中的对象是指针,但列表本身应该是指针吗?我正在从 Java 迁移到 C++,但还没有完全习惯堆栈/堆。该列表不会传递到 A 类之外,只会传递列表中的元素。为了以防万一,将列表本身分配在堆上是一种好习惯吗?

另外,包含 list(A) 的类也应该在堆本身上吗?像列表一样,它不会被传递。

0 投票
9 回答
4629 浏览

heap-memory - 免费商店的“堆”一词的由来是什么?

我试图找到免费商店通常被称为堆的官方(或足够好的)原因。

除了它从数据段的末尾增长,我真的想不出一个好的理由,特别是因为它与堆数据结构关系不大。

注意:相当多的人提到这只是一堆杂乱无章的东西。但是对我来说,堆物理这个词意味着一堆物理上相互依赖的东西。你从下面拉出一个,其他所有东西都倒在上面,等等。换句话说,对我来说,堆听起来组织松散(例如,最新的东西在上面)。这并不是堆在大多数计算机上的实际工作方式,但如果你把东西放在堆的开头然后增长它,我想它可以工作。

0 投票
5 回答
19881 浏览

visual-studio - Visual Studio 2008 - 显示堆

调试时可以查看堆和栈吗?

0 投票
4 回答
576 浏览

c# - C# Indexer 内存问题

我在 main 方法中有以下代码:

在呈现的代码中,rects[1] 保持不变。这是因为 indexer(仍然是一种特殊方法)返回了矩形结构的副本。在这种情况下,元素位于heap上。索引器通过将新副本放在堆栈上返回元素的新副本(因为 Rectangle 是值类型)。

到现在为止还挺好...

后来我在 Program 类中创建了一个 Rectangle 结构数组:

在主要方法中:

我希望 rect 数组的索引器也返回矩形结构的副本,但是这次更改了原始元素(也位于堆上)。

这是为什么?数组索引器是否以不同的方式工作?

亲切的问候 PK

0 投票
7 回答
72693 浏览

c++ - 如何在 C++ 中创建一个位于堆而不是堆栈的数组?

我有一个非常大的数组,它的长度必须是 262144 个元素(并且将来可能会更大)。我试过像这样在堆栈上分配数组:

但是,似乎当我尝试添加元素超过某个点时,当我尝试访问它们时值是不同的。我知道这是因为堆栈上只有有限数量的内存,而不是具有更多内存的堆。

我尝试了以下方法,但运气不佳(无法编译):

然后我考虑使用malloc,但我想知道是否有更多类似 C++ 的方式来执行此操作...

我应该去malloc吗?

0 投票
8 回答
21811 浏览

c++ - 当程序退出时,是否有理由在 C++ 中调用 delete?

例如,在我的 C++main函数中,如果我有一个指向使用堆内存(而不是堆栈内存)的变量的指针 - 这会在我的应用程序退出后自动释放吗?我会这样认为。

即便如此,即使您认为在退出时自动释放内存的情况下永远不会使用它们,也总是删除堆分配是一种好习惯吗?

例如,这样做有什么意义吗?

我在想如果我重构(或其他人重构)该代码并将其放在应用程序中的其他位置,delete那么真的有必要。

除了 Brian R. Bondy 的回答(专门讨论了 C++ 中的含义)之外,Paul Tomblin对一个 C 特定问题也有很好的回答,该问题也谈到了 C++ 析构函数。

0 投票
7 回答
16329 浏览

c++ - 关于 C/C++ 堆栈分配

在学习 C++(和 C)时,我对堆栈分配的工作有一些特别的疑问,我找不到解决方案:

  1. 堆栈分配是否隐式调用 malloc/free 函数?如果不; 它如何确保堆栈分配和堆分配之间没有冲突?

  2. 如是; C++ 中的堆栈分配是否也隐式调用 new/delete?如是; 重载类的新运算符会影响其堆栈分配吗?

它在 VC++ 中产生了令人困惑的结果;但由于 VC++ 并不完全符合标准(或者我听说过),我决定我最好在这里问...

0 投票
2 回答
2323 浏览

stack - 堆喷射,堆溢出,堆溢出有什么区别?

堆喷射,堆溢出,堆溢出有什么区别?

这些术语可以用缓冲区喷射、缓冲区溢出、缓冲区溢出代替吗?

它们也有相同的定义吗?

0 投票
1 回答
2520 浏览

eclipse - 监控 Eclipse 插件堆大小*以编程方式*

我知道我们可以手动监控堆大小,

那么有没有说自动抓取我的eclipse插件中使用的最高内存?这对我来说很方便,因为我的插件可以运行很长时间,手动监控是不可行的。

谢谢