标签: heap

如何使heapq评估特定属性的堆?

我希望拥有一堆物品,而不仅仅是数字.它们将具有一个整数属性,堆可以按其排序.在python中使用堆的最简单方法是heapq,但是在使用heapq时如何告诉它按特定属性排序?

python heap data-structures

38
推荐指数
6
解决办法
4万
查看次数

什么是连续的内存块?

就像在标题中一样,什么是连续的内存块?

c memory heap heap-fragmentation

38
推荐指数
3
解决办法
3万
查看次数

Python:从堆中删除元素

Python具有heapq实现堆数据结构的模块,它支持一些基本操作(push,pop).

如何从O(log n)中的堆中删除第i个元素?是否可以使用heapq或者我必须使用其他模块?

请注意,文档底部有一个示例:http: //docs.python.org/library/heapq.html ,它提出了一种可能的方法 - 这不是我想要的.我想要删除元素,而不仅仅是标记为删除.

python heap

38
推荐指数
2
解决办法
3万
查看次数

是否更快地访问堆中的数据?

我知道这听起来像是一个普遍的问题而且我已经看过很多类似的问题(无论是在这里还是在网上),但它们都不是真的像我的困境.

说我有这个代码:

void GetSomeData(char* buffer)
{
    // put some data in buffer
}

int main()
{
     char buffer[1024];
     while(1)
     {
          GetSomeData(buffer);
          // do something with the data
     }
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我在全局声明缓冲区[1024],我会获得任何性能吗?

我通过time命令在unix上运行了一些测试,执行时间之间几乎没有差异.

但我真的不相信......

理论上,这种变化应该有所作为吗?

c c++ heap performance stack

38
推荐指数
6
解决办法
3万
查看次数

C++类可以确定它是在堆栈还是堆上?

我有

class Foo {
....
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让Foo能够分开:

function blah() {
  Foo foo; // on the stack
}
Run Code Online (Sandbox Code Playgroud)

function blah() {
  Foo foo* = new Foo(); // on the heap
}
Run Code Online (Sandbox Code Playgroud)

我希望Foo能够做出不同的事情,这取决于它是在Stack上堆还是堆.

编辑:

Alof的人问我"为什么这样做?"

答案:

我现在正在使用重新计算的GC.但是,我希望能够运行标记和扫描.为此,我需要标记一组"根"指针 - 这些是堆栈上的指针.因此,对于每个类,我想知道它们是在堆栈中还是在堆中.

c++ heap stack

37
推荐指数
5
解决办法
1万
查看次数

如何动态监控Java堆大小?

我试图动态监视Java堆大小.有人知道如何获得运行一段代码过程中使用的最大内存吗?Runtime.maxMemory()可以解决这个问题吗?谢谢

java heap monitoring

37
推荐指数
5
解决办法
9万
查看次数

堆与堆叠对比彼尔姆空间

  • Java内存空间(Perm Space,Space Stack,Heap Space)之间有什么区别?
  • JVM何时使用其中一个?
  • 如果我使用Scala/Groovy /等,是否存在差异?

java memory heap jvm

37
推荐指数
2
解决办法
2万
查看次数

PriorityQueue /堆更新

一旦PriorityQueue中对象的优先级发生变化,Java是否有一种简单的方法来重新评估堆?我找不到它的任何迹象Javadoc,但必须有办法以某种方式做到这一点,对吧?我正在删除该对象,然后重新添加它,但这显然比在堆上运行更新要慢.

java heap priority-queue

36
推荐指数
2
解决办法
2万
查看次数

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

我正在开发一个Android应用程序.该应用程序有一个包含大量图像的视图.我有一个错误,我会尝试提供尽可能多的信息,希望有人可以给我一些建议.

该应用程序在所有本地测试中都运行良好.但是,我收到了很多来自用户的崩溃: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)
Run Code Online (Sandbox Code Playgroud)

我最大的问题是,即使在旧设备上,我也无法在本地重现问题.

我已经实现了很多东西来尝试解决这个问题:

  1. 没有内存泄漏:我确保根本没有内存泄漏.当我不需要它时,我删除了视图.我还回收了所有的位图,并确保垃圾收集器正常工作.我实现了该onDestroy()方法中的所有必要步骤
  2. 图像大小正确缩放:在获取图像之前,我得到它的尺寸并计算出inSampleSize.
  3. 堆大小:我还在获取图像之前检测最大堆大小,并确保有足够的空间.如果没有足够的,我会相应地重新缩放图像.

用于计算正确inSampleSize的代码

public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight)
   {
      // Raw height and width of image
      final int height = options.outHeight;
      final …
Run Code Online (Sandbox Code Playgroud)

heap android bitmap out-of-memory

36
推荐指数
1
解决办法
5万
查看次数

获得动态C风格数组的大小与使用delete [].矛盾?

我到处都读到,在C++中,只能从指向那块内存的指针获取动态数组的大小.

怎么可能无法从指针获取动态数组的大小,同时可以通过delete []仅使用指针释放所有分配的内存,而无需指定数组尺寸?

delete []必须知道数组的大小,对吧?因此,此信息必须存在于某处.不应该吗?

我的推理有什么问题?

c++ arrays heap

36
推荐指数
3
解决办法
1437
查看次数