Questions tagged «heap»

堆(数据结构)是按深度排序的树。堆也可以引用为动态分配而预留的进程内存。

27
什么是堆栈和堆?
编程语言书籍解释了值类型是在堆栈上创建的,而引用类型是在堆上创建的,而没有说明这两个是什么。我还没有阅读清楚的解释。我了解堆栈是什么。但, 它们在哪里和在哪里(物理上在真实计算机的内存中)? 它们在多大程度上受操作系统或语言运行时的控制? 他们的范围是什么? 什么决定了它们的大小? 是什么使速度更快?

18
为什么C ++程序员应尽量减少对“新”的使用?
我在使用std :: list <std :: string>时偶然发现了std :: string的内存溢出问题内存泄漏,其中一条评论说: 停止使用new太多。我看不到您在任何地方使用新产品的任何原因。您可以在C ++中按值创建对象,这是使用该语言的巨大优势之一。 您不必在堆上分配所有内容。 不要像Java程序员那样思考。 我不确定他的意思。 为什么要在C ++中尽可能频繁地通过值创建对象,它在内部有什么不同? 我是否误解了答案?

23
哪个更快:堆栈分配或堆分配
这个问题听起来很基础,但这是我与另一位与我合作的开发人员进行的辩论。 我很小心地在可能的地方堆放东西,而不是堆放东西。他在跟我说话,看着我的肩膀,并评论说没有必要,因为他们是同样的表现。 我一直给人的印象是,增加堆栈的时间是恒定的,并且堆分配的性能取决于堆当前的分配(查找适当大小的孔)和取消分配(折叠孔以减少碎片)的复杂度,因为如果我没记错的话,许多标准库的实现在删除过程中都需要花费一些时间。 这让我感到震惊,因为它可能非常依赖于编译器。特别是对于这个项目,我正在使用Metrowerks编译器用于PPC体系结构。深入了解这种组合将是最有帮助的,但是总的来说,对于GCC和MSVC ++,情况是什么?堆分配的性能不如堆栈分配高吗?没有区别吗?还是差异如此之细,以至于没有意义的微优化。
503 c++  performance  memory  stack  heap 

17
如何建立堆的时间复杂度为O(n)?
有人可以帮助解释如何建立堆的O(n)复杂性吗? 将项目插入堆中是O(log n),插入重复n / 2次(其余为叶子,并且不能违反堆属性)。因此,O(n log n)我认为这意味着复杂度应为。 换句话说,对于我们“堆砌”的每个项目,它有可能不得不针对到目前为止的堆的每个级别(即log n个级别)过滤一次。 我想念什么?


26
无法为对象堆保留足够的空间
每次尝试运行该程序时,我都会反复收到以下异常。 VM初始化期间发生错误 无法为对象堆保留足够的空间 无法创建Java虚拟机。 我试图增加虚拟内存(页面大小)和RAM大小,但无济于事。 如何消除此错误?
277 java  jvm  heap 

7
如何分析.hprof文件?
我的生产服务器运行时带有以下标志:-XX:+ HeapDumpOnOutOfMemoryError 昨晚,当我们的服务器遇到堆错误时,它生成了一个java-38942.hprof文件。事实证明,该系统的开发人员知道该标志,但是无法从中获取任何有用的信息。 有任何想法吗?
227 java  profiling  heap 


8
从整数流中查找运行中位数
可能重复: C语言中的滚动中值算法 假定从数据流中读取整数。查找迄今为止有效读取的元素的中位数。 我已经读过的解决方案:我们可以在左侧使用最大堆表示小于有效中位数的元素,在右侧使用最小堆表示大于有效中位数的元素。 处理传入的元素后,堆中的元素数量最多相差1个元素。当两个堆包含相同数量的元素时,我们发现堆根数据的平均值为有效中位数。当堆不平衡时,我们从包含更多元素的堆根中选择有效中位数。 但是我们将如何构造最大堆和最小堆,即我们如何知道有效中位数?我认为我们将在max-heap中插入1个元素,然后在min-heap中插入下一个1个元素,以此类推。纠正我,如果我在这里错了。
223 algorithm  heap  median 

14
.Net中的优先级队列
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 我正在寻找优先级队列或堆数据结构的.NET实现 优先级队列是一种数据结构,比简单的排序更具灵活性,因为它们允许新元素以任意间隔进入系统。将新作业插入优先级队列比在每次到达时重新排序所有内容更具成本效益。 基本优先级队列支持三个主要操作: 插入(Q,x)。给定带有键k的项目x,将其插入优先级队列Q。 查找最小值(Q)。返回一个指针,该指针的项的值小于优先级队列Q中的任何其他项。 最小删除(Q)。从密钥最小的优先级队列Q中删除该项目 除非我在错误的地方寻找,否则框架中没有一个。有谁知道一个好人,还是我应该自己做一个?

12
什么是内存碎片?
我听说过在C ++动态内存分配中使用“内存碎片”一词的次数。我发现了一些有关如何处理内存碎片的问题,但是找不到直接解决它本身的问题。所以: 什么是内存碎片? 如何判断内存碎片是否对我的应用程序造成问题?哪种程序最有可能受到影响? 有什么好的常见方法可以处理内存碎片? 也: 我听说很多使用动态分配会增加内存碎片。这是真的?在C ++的上下文中,我了解所有标准容器(std :: string,std :: vector等)都使用动态内存分配。如果在整个程序中都使用了它们(尤其是std :: string),那么内存碎片是否更可能成为问题? 在STL繁重的应用程序中如何处理内存碎片?

4
使用HeapDumpOnOutOfMemoryError参数进行JBoss的堆转储
有人告诉我可以在-XX:+HeapDumpOnOutOfMemoryError我的JBoss启动脚本中将参数添加到JVM启动选项中,以在我们的应用程序出现内存不足错误时进行堆转储。我想知道这些数据在哪里转储?它只是到控制台还是一些日志文件?如果只是控制台,如果我没有通过控制台登录Unix服务器怎么办?
182 java  jboss  memory-leaks  heap 

17
查找Java堆大小和使用的内存的命令行工具(Linux)?
是否有命令行工具(Linux)检查Java应用程序的堆大小(和已用内存)? 我已经尝试通过jmap。但是它提供了信息。关于内部存储器区域,例如Eden / PermGen等,这对我没有用。 我正在寻找类似的东西: 最大内存:1GB 最小内存:256 MB 堆内存:700 MB 使用的内存:460 MB 就这样。我知道我可以在JConsole等中看到它,但是我需要一个命令行工具(无法启用JMX等)。 您知道这样的工具/命令吗?
171 java  linux  performance  memory  heap 



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.