Articles of 堆内存

malloc像使用自定义堆的函数

如果我想用自定义的预分配堆构buildmalloc类似的function,C中最好的方法是什么? 我的具体问题是,我有一个已经被放置到我的地址空间的mmap-able(类似于内存)的设备,但是我需要获得一个更灵活的方式来使用这个内存来存储将被分配和释放的对象。 我知道malloc,free和其他类似的函数是用来在堆上执行这种分配的,但是有什么办法可以使用这种函数提供的逻辑来实现它的dynamic行为,同时提供我自己的地址空间来操作有问题的堆?

为什么连续调用new 不分配连续内存?

我使用Ubuntu 14.04 64位。 这是我的C ++代码,看看如何使用内存。 int main() { int **ptr; ptr = new int* [2]; cout << &ptr << " -> " << ptr << endl; for (int r = 1; r <= 2; r++) { ptr[r-1] = new int [2 * r]; cout << &ptr[r-1] << " -> " << ptr[r-1] << endl; for […]

如果/何时取消分配的堆内存得到回收?

我一直在embedded式Linux系统上运行一夜的内存testing。 使用vmstat我已经观察到,随着时间的推移,空闲内存会稳步下降。 根据procfs中的一些分析,一个进程的堆栈大致以相同的速度增长。 我怀疑有内存泄漏,并在代码中发现了一些经常使用new和delete位置。 但是,我没有看到没有匹配delete调用的new调用。 我再次运行内存testing,今天早上通过以下调用清除了内存caching echo 3 > /proc/sys/vm/drop_caches vmstat中列出的可用内存下降到接近testing开始时的值。 内核是否定期回收未使用的堆页? 如果是这样,除了上面的那个,还有其他的时间呢? 空闲内存可能低于某个阈值时

不能改变tomcat 7的堆大小

我已经通过在catalina.sh添加以下行来设置tomcat 7的堆大小 export CATALINA_OPTS="-Xms512m -Xmx1024m" 然后停下来,启动了tomcat。 但是当试图使用命令jmap -heap获取堆大小时,我可以注意到内存不会改变: Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 526385152 (502.0MB) NewSize = 1048576 (1.0MB) MaxNewSize = 4294901760 (4095.9375MB) OldSize = 4194304 (4.0MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 16777216 (16.0MB) MaxPermSize = 67108864 (64.0MB) Heap Usage: PS Young Generation Eden Space: capacity = […]

Tomcat 7:如何正确设置初始堆大小?

我试图通过在catalina.sh中添加以下行来调整tomcat 7(CentOS,java -version:1.6.0_25-b06)实例的初始堆大小: export CATALINA_OPTS="-Xms=512M -Xmx=1024M" 启动tomcat失败并将以下消息logging到catalina.out: Invalid initial heap size: -Xms=512m Could not create the Java virtual machine. 这些选项有什么问题?

在Windows中设置默认堆大小

我想永久设置Java堆大小,不想运行带有选项的每个jar文件。 我使用Windows和Java 1.7。

CString在内核中与HeapWalk和HeapLock / HeapUnlock死锁结合使用

我的目标是locking为我的进程堆分配的虚拟内存(以防止将其交换到磁盘的可能性)。 我使用下面的代码: //pseudo-code, error checks are omitted for brevity struct MEM_PAGE_TO_LOCK{ const BYTE* pBaseAddr; //Base address of the page size_t szcbBlockSz; //Size of the block in bytes MEM_PAGE_TO_LOCK() : pBaseAddr(NULL) , szcbBlockSz(0) { } }; void WorkerThread(LPVOID pVoid) { //Called repeatedly from a worker thread HANDLE hHeaps[256] = {0}; //Assume large array for the sake […]

JVM在32位操作系统上堆积

我使用32位win.7和使用Eclipse。 还有4GB内存。 我想分配我的Java应用程序的最大堆大小约3 GB,但我能够通过VM参数分配最大1.5GB -Xmx1056m 。 我该怎么办? 如果我安装一个64位win.7。 那么将能够分配3GB的heapsize到我的应用程序?