memory-management相关内容

静态分配 vs. 动态分配 vs. 自动分配

静态分配、动态分配和自动分配有什么区别? 解决方案 会有特定语言的细节,但总体思路是: 静态:在程序启动时分配,存在于程序的整个生命周期 自动:在进入块时分配,在该块的持续时间内存在 动态分配需要更多的解释:当你分配它时它就被分配了(例如像'new XXX'这样的东西).在(大多数实现)C++ 中,它会一直存在,直到您明确删除它.对于大多数较新的语言(例如 Java、C#), ..
发布时间:2022-01-05 20:27:17 其他开发

MonoTouch:应用程序因内存不足而被杀死,为什么?实时字节分配 5 MB top

我的 iPad 应用程序是在 MonoTouch 中开发的,因为我想避免所有内存管理地狱,但似乎并非如此.在模拟器上一切正常,但是当我在设备上测试我的应用程序时,我惊恐地发现它在一些内存警告后很快被操作系统杀死.我的应用程序是一个简单的图像浏览器,它加载一些 PNG 图像并使用 UIScrollView 中的一些 UIViews 显示它们,在触摸时加载下一个或上一个.在模拟器上它工作正常.但是在设 ..
发布时间:2022-01-05 14:33:26 C#/.NET

何时在单声道触摸/mvvmcross 中释放对象

我们正在实施一个似乎存在严重内存泄漏的应用.例如,我们有一个视图及其对应的视图模型,该视图在单声道分析器中注册了 38 次,但它应该被垃圾收集.我们有很多自定义控件等,但是应该在哪里处理这些控件 - 从 ios 6 开始不再调用 viewdidunload 那么我们应该在哪里进行清理? 问候 解决方案 这是个大问题……对于一般情况,很难回答. 一般来说,如果你编写了漂亮的简单 ..
发布时间:2022-01-05 14:25:21 其他开发

PHP 变量引用和内存使用

根据php手册: //笔记://$a 和 $b 在这里完全相等.$a 不指向 $b,反之亦然.//$a 和 $b 指向同一个地方. 我假设: 应该消耗更多的内存: 因为,如果我理解正确的话,在第一种情况下,我们“复制"值 something 并将其分配给 $y 和 $z 最后有 3 个变量和 3 个内容,而在第二种情况下,我们有 3 个变量指向相同的内容. 所以,使用如下代码 ..
发布时间:2022-01-05 12:08:42 PHP

未在 UIViewController 上调用 Deinit,但 Dealloc 是

似乎 dealloc 的 Swift 等价物是 deinit.但是,当您尝试在 UIViewController 上定义该方法时,它的行为与您预期的不同... 设置 使用 Xcode 7.0 在 Swift 或 Objective-C 中创建一个新的单一视图项目. 在使用故事板创建的视图控制器上添加一个“关闭"按钮(我将此视图控制器称为 VC2;它的类是 ViewController ..

Segues 和清除内存中的历史 ViewControllers

我有一个 iPad 应用,它有很多屏幕和很多 segue 选项.目前,我只是使用 performSegueWithIdentifier 来启动这些 segue,我担心随着用户执行越来越多的 segue,我会占用大量内存.我已经看到人们推荐使用函数 popToRootViewControllerAnimated: 如果使用 UINavigationController,但问题是我没有使用它.我怎样才 ..
发布时间:2022-01-05 09:03:13 移动开发

视图控制器被发送消息,即使它已被释放

我不确定 iPhone SDK 3.0 中是否发生了一些变化,但我收到了最奇怪的错误.我有一个视图控制器层次结构,我根据界面方向在视图控制器之间切换.据我所知,每当我旋转界面时都会导致错误,已释放的视图控制器正在发送 shouldAutorotateToInterfaceOrientation 消息.这是错误的回溯: #0 0x01dc43a7 in ___forwarding___#1 0x0 ..

分段错误在内部如何工作(内核/硬件)?

从广义上讲,我想知道内核(或 CPU)如何知道一个进程试图访问它没有权限的内存位置,以及称为 MMU 的神秘硬件如何帮助做到这一点. 特别是:在我看来,MMU 对操作系统内核的内存管理模型(分页、内存区域、进程地址空间......)不可知(我认为 Linux 和 Windows 页面不完全是例如,相同.如果我错了,请纠正我).但是,我的 CPU 如何知道当前代码是否可以访问位置 x?它如何向 ..
发布时间:2022-01-04 22:40:55 其他开发

什么是内存映射页和匿名页?

我无法理解 linux 中的内存映射页面和匿名页面.有人可以用一个例子来解释它吗?与它们相关的内核数据结构是什么? 解决方案 正确的术语是内存映射文件和匿名映射.当提到内存映射时,通常指的是 mmap(2).使用 mmap 有 2 个类别.一类是共享映射与私有映射.另一个类别是文件与匿名映射.混合在一起,您将获得以下 4 种组合: 私人文件映射 共享文件映射 私人匿名映射 共享 ..
发布时间:2022-01-04 22:37:17 服务器开发

确定使用障碍物(围栏)的位置

x86 指令 lfence/sfence/mfence 用于在 Linux 内核中实现 rmb()/wmb()/mb() 机制.很容易理解这些用于序列化内存访问.然而,在编写代码时——在遇到运行时行为中的错误之前,确定何时何地使用它们要困难得多. 我很想知道在编写/审查代码时是否有可以检查的已知警告,这可以帮助我们确定必须插入障碍的位置.我知道这太复杂了,但是否有经验法则或清单可以帮助我们确 ..

如何“固定"Linux 中的页面本身存在(或实际上“固定")

我在 Linux 内核驱动程序中使用 get_user_pages 来固定内存以用于 [硬件] DMA.这一切似乎运行良好 - 但我很难证明“固定"是正确的. 当我在执行 get_user_pages 后检查物理页面上的标志时 - 页面不会出现“锁定"(人们可能认为它们应该是).事实上,我认为其他“活动"页面的标志与我通过 get_user_pages“固定"的标志之间没有区别. 我看 ..
发布时间:2022-01-04 22:33:01 其他开发

如何在 Linux 内核模块中分配可执行页面?

我正在编写一个 Linux 内核模块,我想分配一个可执行页面.普通的 kmalloc() 在不可执行的页面中返回一个指针,在那里执行代码时我会遇到内核恐慌.它必须在 Ubuntu Karmic x86、2.6.31-20-generic-pae 上运行. 解决方案 #include #include ...char *p = __vmalloc(byte_size, GFP_KERNEL, ..

linux下写设备驱动时__iomem有什么用?

我看到__iomem是用来存储ioremap()的返回类型的,但是我在ARM架构中使用过u32它运行良好. 那么 __iomem 在这里有什么区别?我应该在什么情况下使用它? 解决方案 很多类型转换都将“运行良好".但是,这不是很严格.没有什么能阻止您将 u32 转换为 u32 * 并取消引用它,但这不遵循内核 API 并且容易出错. __iomem 是 Sparse 使用的 ..