标签: heap

具体来说,fork()如何处理Linux中malloc()动态分配的内存?

我有一个包含父进程和子进程的程序.在fork()之前,父进程调用malloc()并用一些数据填充数组.在fork()之后,孩子需要那些数据.我知道我可以使用管道,但以下代码似乎有效:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main( int argc, char *argv[] ) {
    char *array;
    array = malloc( 20 );
    strcpy( array, "Hello" );
    switch( fork() ) {
    case 0:
        printf( "Child array: %s\n", array );
        strcpy( array, "Goodbye" );
        printf( "Child array: %s\n", array );
        free( array );
        break;
    case -1:
        printf( "Error with fork()\n" );
        break;
    default:
        printf( "Parent array: %s\n", array );
        sleep(1);
        printf( "Parent array: %s\n", array );
        free( array );
    } …
Run Code Online (Sandbox Code Playgroud)

c linux heap malloc fork

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

O(klogk)时间算法从二进制堆中找到第k个最小元素

我们有一个n节点二进制堆,它包含n不同的项(根目录下的最小项).对于a k<=n,找到O(klogk)时间算法以kth从堆中选择最小元素.

O(klogn)显而易见,但无法找出O(klogk)一个.也许我们可以使用第二堆,不确定.

algorithm heap search time-complexity data-structures

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

"a"堆和"堆"之间的关系是什么?

堆是树数据结构,其中树的较高级别总是包含比较低级别更大(或更小,如果它设置的那样)值."堆"是一堆程序可用于动态分配的空闲RAM.它们都被称为"堆",但是那个与另一个有什么关系呢?

memory heap definition

31
推荐指数
3
解决办法
4283
查看次数

两台机器之间的JVM堆复制

在运行相同Java应用程序的同一网络中连接的两台可分离计算机如何通过在彼此之间同步堆来维持相同状态的基本原理是什么?

我相信Terracotta完成了这项任务,但我不知道一些伪代码会如何描述其核心功能.

我只是在寻找对这项技术的理解.

java heap replication jvm

30
推荐指数
2
解决办法
4457
查看次数

字符串文字是否存储在堆栈中?新的String是否存储在堆栈中?

可能重复:
字符串对象和字符串文字之间的差异

假设我有两个陈述.

String one = "abc";
String two = new String("abc");
Run Code Online (Sandbox Code Playgroud)

哪一个是堆栈内存并存储在堆中?

这两者有什么区别?

创建了多少个对象以及内存中的引用如何?

什么是最佳做法?

java heap stack memory-management

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

Android了解堆大小

我是Android开发的新手,我似乎无法掌握Java Out of Memory异常.我知道这意味着我的应用程序已经超过了VM的预算,但经过Google搜索这么多次后,我似乎仍然没有掌握这个概念.我担心我的应用程序会占用太多内存,因为每个屏幕有六个按钮选择器,每个选择器有两个位图,根据属性选项卡每个大约20 kb.在我的根目录G2x上,我已将VM预算设置为12mb,重新启动了我的手机并运行了我的应用程序,没有任何问题.我在每个onDestroy()上取消绑定drawables并暗示GC也在这里运行.在模拟器中使用应用程序一段时间后,在我的DDMS屏幕上单击"原因GC",结果为ID = 1,堆大小6.133 MB,分配2.895MB,自由3.238 MB,%使用47.20,#对象52,623.

这是我不明白发生了什么,我的模拟器设置为24MB的VM.那个数字在哪里?我遇到的实际问题是,如果我将模拟器设置为16MB的VM,我的应用程序会因为内存不足异常而在第二个活动上崩溃.为什么我的手机上的VM设置为12 MB,或者我的旧HTC Magic手机上有12 MB的VM存量?你们还认为我的应用占用了太多内存吗?我不知道这些DDMS号码是否好.谢谢你的时间.

至于我的代码,我有XML布局中指定的每个图像,除了向它们添加侦听器之外,我不会以编程方式对它们执行任何操作.我在这里找到了这段代码,我已将它添加到我拥有的每个活动中......

@Override
protected void onDestroy() {
    super.onDestroy();

    unbindDrawables(findViewById(R.id.myRootLayout));
    System.gc();
}

private void unbindDrawables(View view) {
    if (view.getBackground() != null) {
        view.getBackground().setCallback(null);
    }
    if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
            unbindDrawables(((ViewGroup) view).getChildAt(i));
        }
        ((ViewGroup) view).removeAllViews();
    }
}
Run Code Online (Sandbox Code Playgroud)

否则,我所做的就是将onClickListeners添加到具有PNG背景的按钮.我想学习如何以编程方式指定按钮背景,但我需要选择功能,如焦点,按下,非聚焦但按下等,以使按钮背景根据用户交互而变化.我已经回顾了关于这个的文档,但它看起来势不可挡,这就是为什么我认为我从这里开始管理堆的基础知识,并努力在代码中指定选择器.这可能没有意义但是有一个"健康"的内存分配量,应用程序可以分配而不会接近内存不足异常?例如,如果一个应用程序分配6MB应该没问题,但8MB会推动它,在内存分配方面有这样的界限吗?再次感谢Alex Lockwood的回复我将再次阅读并重新阅读,直到这些内容对我有意义

heap android virtual-machine dalvik ddms

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

为什么在由数组实现的堆中,索引0未被使用?

我正在学习数据结构,每个源都告诉我在实现堆时不要使用数组的索引0,而不给出任何解释原因.我在网上搜索,搜索了StackExchange,但找不到答案.

algorithm heap

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

在python中偷看一堆

在heapq堆中创建的python堆中偷看的官方方式是什么?现在我有

def heappeak(heap):
  smallest = heappop(heap)
  heappush(heap, smallest)
  return smallest
Run Code Online (Sandbox Code Playgroud)

可以说,不是很好.我可以一直认为这heap[0]是堆的顶部并使用它吗?或者这会假设太多的底层实现?

python heap peek

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

在Javascript中堆栈与堆?(超出最大调用堆栈大小)

我正在尝试构建一个网页,我需要在JavaScript中挖掘几个100MB的数据.对于不同的浏览器,我在不同的数据量下遇到"超出最大调用堆栈大小"错误.

我可以通过遍历我的代码并尝试将函数内部的局部变量移动到更全局的范围来尝试将它们分配到堆而不是堆栈来解决此问题吗?或者JavaScript中不存在这些概念?(据我所知,我的数据中没有任何主要的递归循环,所以它确实是一些巨大的字符串/数字数组似乎导致错误)

如果这不可能,有没有办法要求浏览器保留更多内存?

javascript heap stack memory-management

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

什么是HTOP中的VIRT列?内存开销?

这个HTOP输出中的VIRT列是什么意思?它呈红色并加粗.

我正在运行一个包含4个节点的弹性搜索集群并索引大量数据.

  • 1700个索引有3个分片,有些有10个小文档,有些有500个小文档
  • 1个索引,包含3个分片和6,000万个小文档

它始终显示绿色健康.

这是一款带有4GB RAM和2个CPU的 DigitalOcean液滴.我正在将heapsize设置为2gb (-Xms和-Xmx).

这是RAM内存的开销吗?

  1  [|||||                                9.4%]     Tasks: 26, 122 thr; 2 running
  2  [|||                                  4.3%]     Load average: 0.25 0.47 0.65
  Mem[||||||||||||||||||||||||||||||2592/3954MB]     Uptime: 2 days, 01:05:57
  Swp[                                    0/0MB]

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 9629 root       20   0 16.2G 2516M 97360 S 12.0 63.6 27h02:30 /usr/bin/java -Xms256m -Xmx1g -Xss256k -
21564 root       20   0 16.2G 2516M 97360 S  4.0 63.6  1:12.17 /usr/bin/java -Xms256m -Xmx1g …
Run Code Online (Sandbox Code Playgroud)

memory heap

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