标签: heap-memory

C中的malloc代码

我有一个代码块似乎是背后的代码malloc.但是当我浏览代码时,我感觉部分代码丢失了.有没有人知道是否缺少一部分功能?是否malloc总是将相邻的块组合在一起?

int heap[10000];
void* malloc(int size) {
int sz = (size + 3) / 4;
int chunk = 0;
if(heap[chunk] > sz) {
    int my_size = heap[chunk];
    if (my_size < 0) {
      my_size = -my_size
    }
    chunk = chunk + my_size + 2;
    if (chunk == heap_size) { 
      return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

c malloc implementation heap-memory

1
推荐指数
1
解决办法
8117
查看次数

什么是我的JVM堆大小?

如何确定JVM堆大小的默认值?

请注意,在运行我的应用程序之前/期间,我对设置或修改其初始,最小或最大大小不感兴趣.如果我什么都不做的话,我只想知道给定机器上的是什么!

java jvm heap-memory heap-size

1
推荐指数
1
解决办法
2041
查看次数

哪个是在Java应用程序中处理大型2D数组的最佳选择?

我正在开发一个Java(Swing)的图像处理应用程序,它有很多计算.加载大图像时崩溃:

java.lang.OutOfMemoryError: Java heap space 由于以下原因:

double matrizAdj[][] = new double[18658][18658];
Run Code Online (Sandbox Code Playgroud)

所以我决定尝试一种轻松,尽可能快的数据库来处理这个问题.考虑使用表,因为它是一个2D数组,循环它将结果值插入到其他表中.

我也在考虑使用JNI,但由于我不熟悉C/C++而且我没有时间学习.

目前,我的问题是没有处理,只有堆超载.

我想听听解决这个问题的最佳选择.

编辑: 小解释:首先,我将二值化图像中的所有白色像素都放入列表中.可以说我有18k像素.然后我用该列表执行大量操作.像方差,标准偏差,协方差...继续...最后我必须乘以两个二维数组([2] [18000]和[18000] [2]),得到一个双[18000] [18000] ],是造成我的麻烦.之后,使用此2D阵列完成其他操作,从而产生多个大型2D阵列.

我无法处理需要大量RAM来使用这个应用程序.

java database heap-memory multidimensional-array nosql

1
推荐指数
1
解决办法
1138
查看次数

无法在Mac OSX上增加JMeter的堆大小

有没有办法在Mac OSX中增加JMeter的堆大小?我试过编辑jmeter.bat文件,但没有用.

我编辑了jmeter.sh要添加的文件JVM_ARGS="-Xms3072m -Xmx3072m" jmeter.sh

我也试过以下

#!/bin/bash

heap_size='3072m'
JAVA_CMD="java -Xms$heap_size -Xmx$heap_size" meter`
Run Code Online (Sandbox Code Playgroud)

正如在这个链接中所建议的那样,在ubuntu linux中增加了分配给jmeter的内存

有没有人知道如何在Mac OSX中这样做.我的java版本如下:

java version 1.6.0_65
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)`
Run Code Online (Sandbox Code Playgroud)

在OSX 10.9.4上

java macos heap-memory jmeter

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

什么原因指定InitialHeapSize超过1米?

我理解为什么要指定MaxHeapSize - 它是JVM可以分配的上限.

是否有任何理由指定InitialHeapSize超过1m(甚至1k)?无论如何,一旦应用程序分配了内存量JVM将扩展它.

java heap-memory

1
推荐指数
1
解决办法
54
查看次数

strncat上的分段错误()

首先,我写了一个简单的程序.

  1 #include <string.h>
  2 #include <stdio.h>
  3 #include <stdlib.h>
  4
  5 int main()
  6 {
  7     char *buf = (char*)malloc(sizeof(char)*2000);
  8     char tmp[256];
  9     strcpy (tmp, "test");
 10     printf ("tmp: %s\n", tmp);
 11     strncat (buf, tmp, strlen(tmp));
 12     printf ("buf: %s\n", buf);
 13 }
Run Code Online (Sandbox Code Playgroud)

预期的结果是:

tmp: test
buf: test
Run Code Online (Sandbox Code Playgroud)

但是在我的大项目中合并代码之后.(使用大量堆段)

153     char *inbuf = (char*)malloc(sizeof(char)*2000);
154     char *outbuf = (char*)malloc(sizeof(char)*2000);
155     char *oldinbuf = (char*)malloc(sizeof(char)*2000);
156     char *errbuf = (char*)malloc(sizeof(char)*2000);
157     memset (inbuf, '\0', strlen(inbuf));
158     memset (oldinbuf, '\0', …
Run Code Online (Sandbox Code Playgroud)

c string heap-memory segmentation-fault

1
推荐指数
1
解决办法
676
查看次数

Scala中OutOfMemoryError的原因是什么?

我刚刚开始学习来自Python的Scala.我在Scala中尝试了一个基本的文件处理任务.任务是"[ ... ]"使用正则表达式从数据文件中删除子串.该脚本成功处理前几个文件,然后抛出java.lang.OutOfMemoryError: Java heap space错误.发生错误的数据文件大约是70MB,我有16GB的RAM供我使用.(前面的6个文件的文件大小<100Kb,第一个文件作为例外:5.5MB).

我的问题是:是什么导致了 OutOfMemoryError,我怎样才能改变我的方法以防止它发生?我不明白为什么会这样.我在调试内存错误方面经验不足,因为Python在内存管理方面相对宽容.

关于编码风格或我使用的方法的任何其他评论都非常受欢迎 - 我渴望学习.

Regexer.scala:

import scala.io.Source 
import java.io._

object Regexer {

  def main(args: Array[String]): Unit = {

    val filenames = Source.fromFile("all_files.txt").getLines()

    for (fn <- filenames) {

        val datafile:String = Source.fromFile(fn).mkString

        val new_data:String = datafile.replaceAll(raw"\[.*?\]", "")

        val file = new File(fn)         
        val bw = new BufferedWriter(new FileWriter(file))
        bw.write(new_data)
        bw.close()


    }   
  } 
}
Run Code Online (Sandbox Code Playgroud)

all_files.txt 是一个文件,包含要处理的所有文件的路径(因为它们位于子目录中).

最后,执行时抛出完整的错误消息:

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3332)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596) …
Run Code Online (Sandbox Code Playgroud)

java scala heap-memory out-of-memory

1
推荐指数
1
解决办法
2400
查看次数

C ++在哪里在内存中创建堆栈和堆?

我正在使用Microsoft Visual Studio 2008

当我创建一个指向对象的指针时,它将收到一个内存地址,在本例中为8位十六进制数。例如:0x02e97fc0

计算机使用8位十六进制数字可以寻址4GB的内存。我的计算机中有8GB的内存:

  1. 这是否意味着我的IDE占用的内存不超过4GB?

  2. IDE是否只能处理内存的前4GB或未使用的8GB中的任何4GB?

问题不仅在于所用内存的大小。它还与所用内存的位置有关。此处没有详细介绍:Windows上任何单个进程可以处理的最大内存量

c++ memory memory-management heap-memory stack-memory

1
推荐指数
1
解决办法
410
查看次数

如何针对以下场景进行内存分配?我设法弄糊涂了

我在下面提到了名为"Employee"的属性类.

public class Employee
{
    public int EmpID { get; set; }
    public int DeptId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们都知道"int"数据类型将存储在堆栈中,而Object类型将存储在堆中,如下面的snap所示.

在此输入图像描述

这里我的问题是,当我要创建一个Employee类的对象时

Employee objEmployee = new Employee();
Run Code Online (Sandbox Code Playgroud)

如何进行内存分配?

任何文献或相关链接将不胜感激.

c# clr stack memory-management heap-memory

1
推荐指数
1
解决办法
263
查看次数

对于指向int数组的指针,Malloc()空间的正确方法

假设我有一个指向数组的指针int,如下:int (*x)[3].为这样的变量分配空间的正确方法是什么?例如,假设我想要10个项目的空间(这样我可以10 * 3 = 30在x中存储总值):

/* Is this the correct way? */
x = malloc(sizeof(x) * 10);

/* Will it allow me to do this? */
x[0][0] = 10;
x[0][1] = 20;
x[0][2] = 30;

x[1][0] = 40;
x[1][1] = 50;
x[1][2] = 60;

/* ... etc ... */
Run Code Online (Sandbox Code Playgroud)

或者是否有其他方法可以正确地对内存进行malloc x(即x = malloc(sizeof(int) * 10)x = malloc(sizeof(int *) * 10)

谢谢.

c arrays pointers heap-memory

1
推荐指数
1
解决办法
792
查看次数