- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我在程序中看到了一种奇怪的行为。创建大量对象(500MB RAM)然后释放它们之后,程序的内存占用空间不会恢复到其原始大小。它仍然显示占用空间为160MB(专用工作集)。
正常行为?
Borland的内存管理器的行为不是这样,因此,如果可能,请确认(或确认)这对于FastMM是正常的行为:如果您有一个方便的程序,可以在其中创建一个相当复杂的MDI子级(包含多个控件/对象),可以您在一个循环中(同时)在内存中创建了250个该MDI子实例的实例,然后全部释放它们并检查内存占用量。请确保这些MDI子项至少消耗200-300MB或RAM。
特别是那些仍在使用Delphi 7的用户可以通过临时禁用FastMM来看到差异。
谢谢
如果有人感兴趣,特别是如果您想证明这不是内存泄漏(我希望这不是我的代码中的内存泄漏-这也是本文的重点之一:检查这是否是我的错),以下是原始讨论:
My program never releases the memory back. Why?
How to convince the memory manager to release unused memory
最佳答案
IIRC,Delphi内存管理器不会立即将释放的内存返回给操作系统。
内存按大小分别分配的大块,小块和大块分配。
这些块的内容放完后会保留一段时间,以便在以后再请求分配时使其立即可用。
这限制了成功分配多个对象所需的系统调用量,并有助于避免堆碎片。
关于delphi - 您的程序需要多少内存? (FastMM与Borland MM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499260/
回到 Borland C 编译器的基础知识。我不断收到以下消息,这让我发疯,因为我找不到分号应该放在哪里或为什么要分号 >bcc32 -v- -w -O1 oddEven.c Borland C++
我必须使用VCL形式在Delphi中编写程序。正方形,六边形和八边形的三个图形必须移至上边界,然后移至下边界,依此类推。问题是当坐标Y = 0时,当我试图将值放置在条件运算符中以停止移动时,程序冻结了
这里有一个简短的问题: 我正在尝试在 32 位 Windows 7 上使用 Embarcadero C++ Builder XE3 试验内联汇编,特别是为了开始重新自学汇编,以备将来实际应用的可能性。
我找不到与我想问的相匹配的问题。为什么我不能显示 tan (39/180*3.142)?相反,它给了我 0.0000,我需要小数。 void __fastcall TForm1::Button1Cli
随着我对 VS 2010 越来越失望,我试图找到一些替代方案,我正在寻找 Embarcadero 的新版 C++ env。 当 VS 几乎主导市场时,学习新的(我认为不流行的)产品有什么意义吗? 谢谢
我目前正在使用 Codegear RAD Studio 2007。我公司的一位客户决定他会对我们软件的本地化版本感兴趣(俄语 - 我不知道这是否重要,我们将无法使用标准的 Windows 代码页)。作
我现在正在学习,我有这个作业/任务要做: 1) 如果您按下 CTRL + L 键,所有数字符号都应该改变颜色。 2) 如果按 CTRL + S 键,您将获得光标左侧单词的长度。 我找到了这个函数 in
关于下面的C++代码, LengthAlphabeticalSort lengthAlphabeticalSort; outputList.sort(lengthAlphabeticalSort);
我正在使用 Borland c++ 3.1 编译器。我想处理异常,我编写了以下代码: void main (void) { int a = 0; int b = 1; int
我有以下代码: nErgebnisse = new unsigned int*[nInitialVecSize]; for(unsigned int i = 0; i <= nInitialVecSi
这个问题发生在我身上两次。两次都是在使用 Borland C++ 编程时。当我想运行下面的简单代码时:(完全是我写的) int n, total=0, counter=1,average; while
我正在尝试在 Borland 2010 C++ 中创建一些字典。 TDictionary__2 *d = new TDictionary__2(); 我得到错误:[BCC32 错误] Generics
如果是..那么哪个编译器最适合编译它们? 最佳答案 我的同事(不是我自己)在 386 台老式计算机上使用 Borland 编译器。 他经常遇到内存管理问题,必须非常小心地选择在 DOS 中加载哪些驱动
我不确定是否有人使用 Borland c++ 3.1,但我必须这样做。 我有一个程序可以实现简单的线程并通过定时器中断改变这些线程的上下文。 我有一个无限循环和 2 个线程,它们完成各自的工作并在彼此
void empty() { } 将被编译为 push ebp mov ebp, esp ret 如何声明函数使其没有“修饰”代码?只是简单的 ret。如果那不可能,是否可以在 .C 文件中定义完整的
class Register { private: DWORD ax,dx,cx,bx; // POH DWORD bp,sp; DWORD flag,
我支持使用 Borland C++ Builder 5.02(自 1997 年)编写的 C++ 应用程序。 Borland 字符串类上的 find() 方法的行为与我预期的不同: #include
我广泛听说 Borland C++ 5.5 编译器是免费提供的。搜索下载链接通常只会将我带到 embarcadero.com 页面,如果我能弄清楚,我该死的...... 有人知道下载 BCC 5.5
有人知道 Borland C++ rand() 函数的确切实现吗? 我尝试了以下操作,但结果与我使用真正的 TurboC 4.5 得到的结果不一样。当然,我尝试了不同变体的代码,但没有成功。 unsi
我编写了一个程序,使用串行连接与某些硬件进行通信。它以我的方式发送很多十六进制值(传感器读数),并且每隔一段时间它就会发送一个负值。前任。我收到一个十六进制值:FFFFF5D6我必须将其转换为:-26
我是一名优秀的程序员,十分优秀!