heap-memory相关内容

如何查看给定 .NET 应用程序中的内存分配?

我需要检查堆中分配了多少内存.有没有办法用 C# 以编程方式获取这个值? 我知道 System.Runtime.InteropServices.Marshal.SizeOf(...) 但它只告诉我对象的大小. 解决方案 使用 PerformanceCounter 你可以从你自己的进程,甚至其他进程中查询“# Bytes in all Heaps". 使用类别“.Net CLR ..
发布时间:2021-12-24 17:14:30 C#/.NET

如何避免堆碎片?

我目前正在研究一个需要大量内存的医学图像处理项目.我可以做些什么来避免堆碎片并加快对已加载到内存中的图像数据的访问? 该应用程序使用 C++ 编写并在 Windows XP 上运行. 编辑: 应用程序对图像数据进行一些预处理,例如重新格式化、计算查找表、提取感兴趣的子图像……应用程序在处理过程中需要大约 2 GB RAM,其中大约 1.5 GB 可用于图像数据. 解决方案 如果 ..

这种类型的内存是在堆还是堆栈上分配的?

在 C++ 的上下文中(并不重要): class Foo{私人的:int x[100];上市:富();} 我学到的东西告诉我,如果你像这样创建一个 Foo 实例: Foo bar = new Foo(); 然后数组 x 被分配在堆上,但如果你像这样创建了一个 Foo 实例: Foo bar; 然后在栈上创建. 我在网上找不到资源来确认这一点. 解决方案 对您的示例稍作修改 ..
发布时间:2021-12-24 16:57:26 C/C++开发

堆和栈内存是如何管理、实现和分配的?

在 C/C++ 中,我们可以在堆栈或堆上存储变量、函数、成员函数、类的实例. 每个是如何实现的?它是如何管理的(高级别的)?gcc 是否预先分配了一块内存用于堆栈和堆,然后根据请求分发出去?原始内存来自RAM吗? 可以在堆上而不是在堆栈上分配函数吗? 澄清 我真正想问的是堆和栈内存的实现和管理.阅读参考问题后, 我没有找到任何可以解决这个问题的内容... 谢谢你的链接 ..
发布时间:2021-12-24 16:56:38 C/C++开发

堆栈和堆内存的大小

可能的重复: 栈和堆是什么以及在哪里? 关于c程序中内存布局的基本概念,我的理解是: 该语言使用两种主要的数据结构栈和堆. 栈是用来存放子程序的局部变量和簿记数据的 堆是用来存放程序动态分配的变量 堆本质上是可变长度的.(在堆栈上不太确定) 通常情况下,编译器/语言有责任在执行之前请求操作系统创建这些数据结构. 问题 创建堆栈/堆的初始大小是多少?谁来决定? 它 ..
发布时间:2021-12-24 16:51:41 其他开发

类的字段,它们存储在堆栈中还是堆中?

我昨天看到一个问题,它提出了(对我而言)另一个问题.请看下面的代码: 公共类 Class1{国际A;//正如我所理解的,int是值类型,因此存在于堆栈中}类 Class2{跑(){Class1 instance1 = new Class1();实例1.A = 10;//它指向值类型,但不是这个引用(在堆上)吗?}} 或者在创建 Class1 的实例时,它的字段类型也是在堆上创建的?但是我不明白 ..
发布时间:2021-12-24 16:48:04 C#/.NET

"new" 和有什么不一样?和“malloc"和“calloc"在 C++ 中?

“new"和“new"有什么区别?和“malloc"和“calloc";和其他家庭成员? (何时)除了“new"之外我还需要什么吗?? 其中一个是否使用其他实现? 解决方案 new 和 delete 是 C++ 特定的功能.它们在 C 中不存在. malloc 是老派的 C 做事方式.大多数情况下,您不需要在 C++ 中使用它. malloc 分配未初始化的内存.分配的内 ..
发布时间:2021-12-24 16:45:01 C/C++开发

当程序退出时,是否有理由在 C++ 中调用 delete?

例如,在我的 C++ main 函数中,如果我有一个指向使用堆内存(而不是堆栈内存)的变量的指针 - 在我的应用程序退出后是否会自动释放?我会这么认为. 即便如此,即使您认为在退出时自动释放内存的情况下它们永远不会被使用,始终删除堆分配是否是一种好习惯? 例如,这样做有什么意义吗? int main(...){A* a = 新 A();a->DoSomething();删除一个;返回 ..
发布时间:2021-12-24 16:43:25 C/C++开发

有没有办法在不使用时降低 Java 堆?

我目前正在开发一个 Java 应用程序并努力优化其内存使用.据我所知,我正在遵循正确垃圾收集的准则.但是,即使不需要,我的堆似乎也处于最大大小. 当计算机无人使用时,我的程序每小时运行一次资源密集型任务.此任务使用了相当大的内存块,但在任务完成后立即将其全部释放.NetBeans 分析器显示内存使用情况如下所示: 我真的很想在不使用时将所有这些堆空间还给操作系统.我没有理由完全依赖它, ..
发布时间:2021-12-24 16:43:18 Java开发

在 C++ 中正确使用堆栈和堆?

我已经编程了一段时间,但主要是 Java 和 C#.我从来没有真正需要自己管理内存.我最近开始用 C++ 编程,我对什么时候应该在堆栈上存储东西以及什么时候将它们存储在堆上有点困惑. 我的理解是,经常访问的变量应该放在栈和对象上,很少用到的变量,大数据结构都应该放在堆上.这是正确的还是我不正确? 解决方案 不,堆栈和堆之间的区别不在于性能.它的生命周期:函数内的任何局部变量(任何你没 ..
发布时间:2021-12-24 16:39:05 C/C++开发

如何增加 Groovy 的 JVM 堆大小?

网络上的一些来源声称我应该能够将 -Xmx 参数提供给 groovy,但是当它找不到 -Xmx 文件时,它只会给我 java.io.FileNotFoundException.其他来源告诉我设置一些名为 JAVA_OPTS 的变量,但我该怎么做?我怎么知道它是否有效? 解决方案 $ export JAVA_OPTS="$JAVA_OPTS -Xmx64M"$ groovy ..
发布时间:2021-12-23 16:19:36 其他开发

C++ 删除不会释放所有内存(Windows)

我需要帮助了解我在 Windows 上的内存分配和释放问题.我目前正在使用 VS11 编译器(VS2012 IDE)和最新更新(更新 3 RC). 问题是:我正在为二维数组动态分配一些内存并立即释放它.尽管如此,在内存分配之前,我的进程内存使用量在分配前为 0,3 MB,在分配时为 259,6 MB(预期因为分配了 32768 个 64 位整数(8 字节)数组),分配期间为 4106,8 M ..

分配向量时,它们使用堆上的内存还是堆栈上的内存?

以下所有说法都是正确的吗? vector向量;//在堆栈上分配 vect 并且每个类型(使用 std::allocator)也将在堆栈上向量*vect = 新向量;//在堆上分配vect,每个类型都将在堆栈上分配向量向量;//vect 将在堆栈上,Type* 将在堆上. 如何在 vector 或任何其他 STL 容器中为 Type 内部分配内存? 解决方案 vector向量; 将在堆 ..
发布时间:2021-12-21 13:18:27 C/C++开发

JVM 进程与 JVM 堆内存使用情况

我已经阅读了这篇进程内存与堆 -- JVM我有同样的问题. jvm 进程内存使用量不断增加,永不减少.我通过在 linux 服务器上做一个 top 来检查.应用程序正在将作业调度到集群(使用 Quartz + Sun Java DRMAA API) 在应用程序生命周期中,java 堆空间保持在限制范围内,但 jvm 进程显示内存使用量稳步攀升并且从未下降. 这是内存泄漏吗?如果是 ..
发布时间:2021-12-21 10:24:06 Java开发

Swift 栈和堆理解

我想快速了解堆栈中存储的内容和堆中的内容.我有一个粗略的估计:您打印的所有内容和内存地址出现的不是值,它们存储在堆栈中,而作为值打印出来的东西,它们在堆上,基本上根据值和引用类型.我完全错了吗?或者,您能否提供堆栈/堆的可视化表示? 解决方案 如 @Juul 所述,引用类型存储在堆栈中的堆和值. 解释如下: 堆栈和堆 Stack 用于静态内存分配,Heap 用于动态内存分 ..
发布时间:2021-12-21 10:15:36 移动开发

如何在 Linux 上检查进程的堆大小

我正在编写一些代码,但它一直崩溃.后来在挖掘转储之后,我意识到我超出了最大堆限制(如果我在 malloc 上添加了一个检查,生活会更容易).虽然我解决了这个问题,但有什么办法可以增加我的堆大小吗? PS:这里有一个很类似的问题但我的回答不清楚. 解决方案 堆通常与架构上的可寻址虚拟内存一样大. 您应该使用 ulimit -a 命令检查系统当前限制并在我的 OpenSuse 上查 ..
发布时间:2021-12-21 10:11:18 服务器开发

内存管理、堆损坏和 C++

所以,我需要一些帮助.我正在用 C++ 开发一个项目.但是,我认为我以某种方式设法破坏了我的堆.这是基于这样一个事实,即我向一个类添加了一个 std::string 并为它分配了另一个 std::string 的值: std::string hello = "Hello, world.\n";/* exampleString = "Hello, world.\n" 可以正常工作.*/示例字符串 ..
发布时间:2021-12-21 10:10:14 C/C++开发

malloc() 和 free() 在哪里存储分配的大小和地址?

malloc() 和 free() 在哪里存储分配的地址及其大小(Linux GCC)?我已经读过一些实现将它们存储在实际分配的内存之前的某个地方,但我无法在我的测试中确认这一点. 背景,也许有人对此有另一个提示: 我正在尝试分析一个进程的堆内存,以确定另一个进程中字符串的当前值.访问进程堆内存并浏览它是没有问题的.但是,由于字符串的值发生变化,并且进程每次都会分配新的内存部分,因此字 ..
发布时间:2021-12-21 10:06:20 其他开发