使用 Objective-C 以编程方式释放系统内存

2024-03-12

所以,这就是我想做的:

  • 释放系统内存(非活动内存),以同样的方式purge命令确实如此,尽管是以编程方式。

我已经尝试过这里的代码(其作者声称它有效),但它所做的只是导致 Mac OS X 冻结:

void
free_up_memory()
{
    int c;
    char *p, *q;

    for(c = 0; c < 2048; c++)
    {
        if(!(p = malloc(1024 * 1024)))
        {

            return;
        }
        for(q = p; q < p + (1024 * 1024); q += 4096)
        {
            *q = 1;
        }

    }
}

有任何想法吗?


现实情况是,代码并没有做到——也永远不会做到——它所声称的那样。这是垃圾。

它要做的就是破坏系统的缓冲区缓存子系统,并可能使机器快速进入分页状态,从而导致看起来完全像锁定的症状。特别是在硬盘驱动器速度较慢(例如 5,400rpm 笔记本电脑驱动器)的系统上。

至少在 RAM 量相对较小的系统上是这样。在 RAM 较大且运行的应用程序负载相对较轻的系统上,该程序将逐出 2GB 缓冲区高速缓存,导致各种 I/O 操作变慢,因为需要从磁盘重新读取各种内容,但实际上并非如此帮助任何事情。

此类事情也没有必要;如果应用程序需要内存,系统将根据需要从缓冲区缓存中逐出页面和/或将内存分页到磁盘(在 OS X 上 - 在 iOS 上,没有分页器能够在很大程度上写入脏页以保持响应能力)。

呼唤至purge将驱逐各种磁盘缓冲区缓存并模拟冷启动时的条件,但是,同样,这只会破坏系统的缓存机制,而不会真正提高用户级应用程序的性能。正如手册页文档所示,它对于测试应用程序性能非常有用冷缓存状态,但即使这样也有点可疑purge不会驱逐所有可以驱逐的东西;不会干净地模拟冷状态。

Steve Jessep 的观点非常正确,在某些情况下,可能会调用purge(或类似的)可能会提高这种情况下的性能。这通常(几乎普遍)在一般情况下会崩溃,因为用户进程 A 无法知道用户进程 B、C、D、....、Z 在附近或附近的任何点可能执行的操作遥远的未来。例子; A 可能会清除一些内容,结果却让 RSS Feed Scraper R 撕下几 MB 的 XML 进行解析和持久化,从而立即使清除无效。更糟糕的是,R 的上次刷新可能仍有一些位潜伏在缓存中,这样 R 的刷新会影响 I/O,使其速度更慢且成本更高(包括消耗电池寿命)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Objective-C 以编程方式释放系统内存 的相关文章

  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • UITabBarController 为 TabBar 的每个 ViewController 提供不同的 Storyboard 文件

    我的团队正在开发一个具有 UITabBarController 的应用程序 我们正在使用 Storyboard 来开发界面和流程 由于我们是一个团队 所以我们不能将所有流程放在一个故事板中 因为这会导致与 SVN 同步出现问题 所以 解决方
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 外键和模型继承哪个更好?

    我有这样的用例场景 有些地方是游乐场 餐馆 剧院 酒吧 相同place可以有游乐场 餐馆 剧院等 有几种实现方法 使用外键 class Place models Model name models CharField max length
  • 如何检查连接到 GRPC 服务器的客户端

    为了为我的 GRPC 服务器 客户端设置提供更好的调试信息 我正在尝试寻找一个 APIgrpc server这使我能够检查哪些客户端连接到服务器 我发现的最有希望的问题是问题 它给出了如何在 Java GRPC 中执行此操作的起点 http
  • 使用java的X509序列号

    我需要从 X509 证书获取一些数据 如果我在 Windows 中打开证书文件 它会以这种格式显示其序列号 ex 39 65 70 eb d8 9f 28 20 4e c2 a0 6b 98 48 31 0d 我试图使用 java 获取相同
  • 修复了背景附件在 Chrome 中不起作用的问题

    我尝试在 google 上寻求帮助 这似乎是 chrome 中的一个错误 但我仍然找不到解决方案 我已经查看了许多与此类似的 stackoverflow 问题 但这些解决方案仍然没有帮助 当我尝试在页面上向下滚动时 背景图像会闪烁并变得混乱
  • Matlab:bar 不存在公共属性 CData

    Matlab示例代码无法在Matlab 2017a Linux 64位 中运行 https cn mathworks com help matlab ref bar html https cn mathworks com help matl
  • 在堆栈上增长数组

    这本质上是我的问题 在函数的生命周期中 我生成一些整数 然后在也是同一函数一部分的算法中使用整数数组 整数数组仅在函数内使用 因此将数组存储在堆栈上自然是有意义的 问题是在生成所有整数之前我不知道数组的大小 我知道如何在堆栈上分配固定大小和
  • 从另一个 url 加载动态模块 - angular4

    是否可以引用模块 已以 umd 或 es 格式编译 并将其动态加载到已编译的角度应用程序中 主 shell 应用程序托管于 http plugin shell mydomain com http plugin shell mydomain
  • 在没有数据库或用户名的情况下使用 php 密码保护文件夹/页面的最佳方法是什么

    使用没有数据库或用户名但使用 php 密码保护文件夹的最佳方法是什么 基本上 我有一个页面将列出组织的联系人 并且需要密码保护该文件夹 而无需为每个用户提供帐户 只需一个密码 该密码会经常更改并分发给群组 我知道它不是很安全 但我仍然想知道
  • ARM 未定义指令错误

    我在运行嵌入式系统 无协处理器 无 MMU Atmel 9263 时收到未定义指令错误 嵌入式系统的内存范围为 0x20000000 0x23FFFFFF 目前为止我遇到过两个案例 SP 0x0030B840 LR 2000AE78 LR指
  • 何时在 Gradle 任务中使用“<<”

    有时我会看到 task hey lt lt println Hello Gradle 其他时候我看到 task hey println Hello Gradle 什么时候使用 lt lt 你什么时候不这样做 以及为什么 lt lt 是简写d
  • 如何使用 Linq.Expressions 查询集合

    我构建了一个自定义 IQueryable 提供程序 例如 提供者转换查询 c PurchaseDate new DateTime 2011 11 29 c Name Elizabeth Brown 从底层代码到 System Linq Ex
  • Google 地图 V3 可见标记上的 fitBounds

    发现很难获得关于此的清晰信息 但我想要实现的是可见标记上的 fitBounds 该数组定义标题 类别 纬度 经度和 href 它将所有标记添加到地图 但仅显示第一个类别 当您单击其他类别时 它也会显示这些类别 我可以让 fitBounds
  • 在python2虚拟环境中安装python3

    我有一个在 Python 2 虚拟环境中运行的 Flask 应用程序 我想要运行Python 3程序 所以我需要将python3安装到虚拟环境中 我该怎么做呢 我必须重新创建环境吗 这是一次艰难的迁移吗 不建议混合使用多个版本的Python
  • React Router 与 Spring Boot 路由冲突

    我正在前端使用 React 创建 Spring Boot 应用程序 我可以在浏览器中打开该页面 但在后端出现错误 RequestRejectedException The request was rejected because the U
  • Core Audio (iOS 5.1) Reverb2 属性不存在,错误代码 -10877

    我正在玩苹果的示例项目 LoadPresetDemo 我添加了混响音频单元AudioUnit kAudioUnitSubType Reverb2如图所示 这是唯一可用的 iOS 混响 在 CoreAudio 头文件 AudioUnitPar
  • Javascript DOM .querySelector() null 问题

    我正在用纯 JavaScript 编写代码 有很多场景我会使用querySelector 方法 我多次遇到问题 比如 对于以下代码 未捕获类型错误 无法读取 null 的属性 classList document querySelector
  • 使用 Docker compose 传递 Dockerfile 的参数

    我正在尝试在构建阶段使用参数化我的 dockerfiles 并在 Docker compose 中使用参数 例如 在 Docker compose 中 我定义了一项名为 bpp 的服务 如下所示 bpp build context dock
  • 如何在 Flutter 中检测另一个应用程序是否打开?

    已编辑 我想创建一个阻止使用社交媒体应用程序的应用程序 就像他们打开 Instagram 或其他东西一样 Flutter 应用程序就会知道 当我的 Flutter 应用程序打开时 如何检测另一个应用程序 例如 Instagram 或 Twi
  • 数据集可扩展吗?像 myspace 这样的网站会使用它们进行数据检索吗?

    数据集的可扩展性如何 团队成员希望使用数据集进行数据检索和操作 使用内置的数据完整性等来使用对象执行数据更新等 我们的系统预计将扩展到数百万用户 我读到的所有内容都是针对企业环境中的数据集的 我在这里错了还是什么 免责声明 这些是我根据个人
  • 使用 Objective-C 以编程方式释放系统内存

    所以 这就是我想做的 释放系统内存 非活动内存 以同样的方式purge命令确实如此 尽管是以编程方式 我已经尝试过这里的代码 其作者声称它有效 但它所做的只是导致 Mac OS X 冻结 void free up memory int c