Tag:

PriorityQueue /堆更新

一旦PriorityQueue中的对象的优先级发生了改变,Java是否可以轻松地重新评估一个堆? 我无法在Javadoc中find任何迹象,但必须有办法做到这一点,对不对? 我目前正在删除对象,然后重新添加它,但是这显然比在堆上运行更新慢。

malloc期间在内核中会发生什么?

面试中我被问到了这个问题。 他们想知道的是,当用户调用malloc(4)分配4个字节的内存时,操作系统(Linux)如何响应? 哪个子系统响应这个系统调用? 我告诉他malloc()将由内存pipe理子系统服务。 malloc()实现将遍历空闲内存列表(物理内存),我们将其称为空闲列表,并find大于或等于4字节的相应块。 一旦find这样的块,它将从空闲列表中删除并添加到使用的列表。 然后,这个物理内存将被映射到进程堆vma结构。 他似乎对这个答案并不满意。伙伴系统如何适应这个问题呢? 任何帮助将不胜感激。

如何删除堆数据结构?

我知道如何从最大堆中删除根节点,但是是从中间删除一个节点以删除并重复replace根,直到删除所需节点的过程? O(log n)是这个过程的最佳复杂度吗? 这是否会影响大O复杂性,因为必须删除其他节点才能删除特定节点?

build议避免位图内存不足错误

我正在研究一个Android应用程序。 该应用程序有一个包含大量图像的视图。 我有一个错误,我会尽量提供尽可能多的信息,希望有人能给我一些build议。 该应用程序在所有的本地testing中工作良好。 但是,我收到了很多来自用户的崩溃: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 这是堆栈跟踪 0 java.lang.OutOfMemoryError: bitmap size exceeds VM budget 1 at android.graphics.Bitmap.nativeCreate(Native Method) 2 at android.graphics.Bitmap.createBitmap(Bitmap.java:507) 3 at android.graphics.Bitmap.createBitmap(Bitmap.java:474) 4 at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:379) 5 at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:498) 6 at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:473) 7 at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336) 8 at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:359) 9 at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:385) 我最大的问题是,即使在旧设备上,我也无法在本地重现问题。 我已经实现了很多东西来解决这个问题: 没有内存泄漏 :我确定没有内存泄漏。 当我不需要他们时,我删除了这些意见。 我也回收了所有的位图,并确保垃圾收集器正常工作。 我在onDestroy()方法中实现了所有必要的步骤 图像大小正确缩放 […]

如何dynamic监控Java堆大小?

我正在尝试dynamic监视Java堆大小。 有谁知道如何获得在运行一段代码的过程中使用的最大内存? Runtime.maxMemory()有诀窍吗? 谢谢

如何优化编译时间和RAM使用的gradle编译性能?

我目前正在从ant切换到Gradle for我的多模块Web应用程序,目前看来,当前版本的Gradle(M9)可能会跑到它的极限。 但也许(希望)这只是一个问题,我没有理解Gradle的概念够好或不知道“魔术表演升压开关”。 我很乐意提供有关如何优化构build性能的提示。 问题是:在显示第一个compileJava之前几分钟,即使源代码中没有任何更改,该进程至less运行7分钟,直到中途崩溃:testClasses (在不同的子项目中),带有以下消息: * What went wrong: Could not resolve all dependencies for configuration ':mysubproject_X:testRuntime'. > Java heap space 该项目由大约30个(部分相互依赖的)子项目组成,它们的构build梯度大致相同,并且用于从每个子项目构build一个jar文件,例如 sourceSets { main { java { srcDirs 'src' } } } dependencies { compile project(':mysubproject_A') compile project(':mysubproject_B') compile project(':mysubproject_E') compile group: 'commons-lang', name: 'commons-lang', version: '2.2' } // copy all non-java files […]

如何实现基于最小堆的优先级队列的O(logn)减less键操作?

我正在开发一个演示Djikstraalgorithm的应用程序,为了使用它,我需要在元素值减less时恢复堆属性。 关于复杂性的问题是, 当algorithm改变元素的值时,用于优先级队列的内部结构(在这种情况下为堆)中的该元素的索引 是未知的 。 因此,我现在需要做一个O(n)的search,以便恢复索引,然后才能对其执行实际的减键 。 而且,我并不完全确定操作所需的实际代码。 我在这里使用D堆作为我的优先级队列。 伪代码将有所帮助,但我更喜欢Java中的一个例子,如何做到这一点。

Websphere中的javacore,线程转储和堆转储之间的区别

有人能告诉我javacore,线程转储和堆转储之间的确切区别吗? 在哪种情况下,每一种都被使用?

有固定容量和自定义比较器的PriorityQueue实现吗?

相关问题: 具有固定大小的Java PriorityQueue 我如何使用PriorityQueue? 获取数组中n个最小元素的索引 Scala:有没有像我在Java中一样使用PriorityQueue的方法? 我有一个非常大的数据集 (超过500万个项目),我需要从它得到N个最大的项目。 最自然的方法是使用堆栈/优先级队列, 只存储前N个项目 。 对于JVM(Scala / Java),有几个优先级队列的实现,即: scala.collection.mutable.PriorityQueue java.util.PriorityQueue中 lucene.util.PriorityQueue 前两个是不错的,但他们存储所有的项目,在我的情况下给重要的内存开销。 第三(Lucene的实现)没有这样的缺点,但正如我从文档中看到的,它也不支持自定义比较器,这对我来说是无用的。 所以,我的问题是:有固定容量和自定义比较器的PriorityQueue实现吗? UPD。 最后,我根据Peter的回答创build了自己的实现: public class FixedSizePriorityQueue<E> extends TreeSet<E> { private int elementsLeft; public FixedSizePriorityQueue(int maxSize) { super(new NaturalComparator()); this.elementsLeft = maxSize; } public FixedSizePriorityQueue(int maxSize, Comparator<E> comparator) { super(comparator); this.elementsLeft = maxSize; } /** * @return […]

内存分配是系统调用吗?

内存分配是系统调用吗? 例如,malloc和new。 堆是由不同进程共享的,并由操作系统pipe理。 什么私人堆? 如果堆中的内存分配由操作系统pipe理,那么这是多么昂贵? 我也想有一些链接到我可以阅读更多关于这个主题的地方。