Questions tagged «heap»

6
Java中的堆栈和堆内存
据我了解,在Java中,堆栈内存保存了原语和方法调用,而堆内存则用于存储对象。 假设我有一堂课 class A { int a ; String b; //getters and setters } a类中的基元A将存储在哪里? 为什么堆内存根本存在?为什么我们不能将所有内容都存储在堆栈中? 当对象被垃圾回收时,与对象相关联的堆栈是否被破坏?

6
如果可以在堆栈上更高效地完成所有工作,我们为什么需要堆?
这实际上与我昨天问的问题有关,为什么今天使用的应用程序同时需要堆栈和堆(以及为什么不能只使用堆而不同时使用堆,为了拥有简单的&唯一标准)。 但是,许多响应表明堆栈是不可替代的,这是因为与尝试分配/引用堆相比要快数百(或数千)倍。我知道,如果不使用Heap,动态存储分配就会出现问题,但是没有办法解决这一问题,或者没有办法在Stack上进行改进以使其能够处理动态内存分配吗?
24 stack  heap 

2
操作系统如何限制堆栈和堆的大小?
注意:如果您需要考虑特定的操作系统才能回答问题,请考虑使用Linux。 每当我运行一个程序时,都将为其分配一个虚拟内存空间,其中有一个用于堆栈的区域,一个用于堆栈的区域。 问题1:堆栈和堆是否有静态大小限制(例如,每个大小为2 GB),还是该限制是动态的,根据程序执行期间的内存分配而变化(即,总共4 GB供用户使用)两者兼而有之,因此,如果程序仅使用堆栈,那么它将能够具有4 GB的堆栈)? 问题2:如何定义限制?它是总可用RAM内存吗? 问题3:文本(代码)和数据部分如何处理,如何限制它们?
21 linux  memory  stack  heap 

5
Java堆分配比C ++更快
我已经在SO上发布了这个问题,它的确可以。不幸的是它关闭了(只需要一票就可以重新打开),但是有人建议我将它发布在这里,因为它更合适,因此以下内容实际上是该问题的粘贴内容 我正在阅读对此答案的评论,并且看到了这句话。 对象实例化和面向对象功能使用起来非常快(在许多情况下,它们比C ++更快),因为它们是从一开始就设计的。且收集速度很快。即使在大多数优化的C代码方面,标准Java在这一领域也优于标准C / C ++。 一位用户(我可能会添加非常高的代表)大胆地捍卫了这一主张,并指出 Java中的堆分配比C ++更好 并添加了该语句来捍卫Java中的集合 与Java集合相比,Java集合与C ++集合相比速度更快,这在很大程度上归因于内存子系统的不同。 所以我的问题是,这是否真的是真的,如果是的话,为什么Java的堆分配这么快?


3
一个很好的C可变长度数组示例[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 这个问题在SO上引起了不小的反响,所以我决定在那里删除它,然后在这里尝试。如果您认为它也不适合此处,请至少对如何找到我所追求的示例提出建议... 您能举个例子吗,使用C99 VLA相对于当前的标准堆(使用C ++ RAII机制)提供了真正的优势? 我遵循的示例应: 与使用堆相比,可轻松实现(可能达到10%)的性能优势。 没有一个好的解决方法,它根本不需要整个数组。 实际受益于使用动态尺寸,而不是固定的最大尺寸。 在正常使用情况下,不太可能导致堆栈溢出。 足够强大,足以吸引需要性能的开发人员在C ++项目中包含C99源文件。 在上下文中添加了一些说明:我的意思是C99所指的VLA,但不包括在标准C ++中:int array[n]这里n是变量。在一个用例示例中,我胜过其他标准(C90,C ++ 11)提供的替代方案: int array[MAXSIZE]; // C stack array with compile time constant size int *array = calloc(n, sizeof int); // C heap array with manual free int *array = new int[n]; // …
9 c++  c  stack  heap 

3
自定义堆分配器
大多数程序在堆分配方面可能很随意,甚至在某种程度上,功能性编程语言更喜欢分配新对象而不是修改旧对象,并使垃圾回收者担心释放对象。 但是,在嵌入式编程中,静默扇区中,由于内存和实时限制,在许多应用程序中根本无法使用堆分配。每种类型将要处理的对象数量是规范的一部分,并且所有内容都是静态分配的。 游戏编程(至少对于那些雄心勃勃地致力于推动硬件发展的游戏)有时介于两者之间:您可以使用动态分配,但有足够的内存和软实时约束,因此您不能将分配器视为黑匣子,更不用说使用垃圾回收了,所以您必须使用自定义分配器。这是C ++仍在游戏行业中广泛使用的原因之一。它可以让您执行以下操作:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 在这两个领土之间还有哪些其他域?除游戏外,在哪里大量使用自定义分配器?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.