gpt4 book ai didi

ios - 常驻内存与事件字节

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:08:58 25 4
gpt4 key购买 nike

假设:我正在开发一个使用 Cocos2d 2.0 和 ARC 的 iPhone 项目(并使用 XCode 4.5.2 的 Instruments)。

简短的问题:为什么常驻内存比事件字节高得多?

我这样说是因为:

使用仪器:我确实收到低内存警告,我运行我的分配工具并平均看到 3/5 MB 的事件字节。然后我得到一个峰值 (18MB),然后回到 3/5MB。问题是,每当我不断地从一个场景来回切换到另一个场景时,我都会收到内存不足警告。

enter image description here

使用常驻内存控制台打印

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[self report_memory];
[[CCDirector sharedDirector] purgeCachedData];
}

-(void) report_memory {
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if( kerr == KERN_SUCCESS ) {
NSLog(@"Memory in use (in bytes): %u", info.resident_size);
} else {
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
}

我确实收到内存警告,第一次打印是 48MB,然后又是 48MB,然后是 66MB,然后……崩溃!

所以我想知道,为什么人们说我应该只担心 Live Bytes

换句话说,假设我的应用程序是唯一运行的(所有其他应用程序都被杀死)我可以说具有非常低的事件字节(从 4MB 到 20MB 不等)并不意味着我不会收到内存不足警告?

最佳答案

您的问题的简短回答是"is"。低事件字节数并不意味着您不会收到低内存警告。我之所以这么说,是因为在几个不同的场合,我看到内存警告同时出现,而 Instruments 坚持我的应用程序的事件字节是非常合理的。

然而,绝大多数情况下,低事件字节数是您的应用没有使用太多内存的良好指标,如果您正在寻找内存峰值或泄漏的间接证据,事件字节数是需要观察的数字.

常驻内存是对已分配给您的应用程序且尚未被系统回收的内存的度量,但部分/大部分常驻内存可以被系统回收。 Live bytes 是分配给您的应用程序的内存,目前无法被系统回收。因此,您应该期望应用程序的常驻内存始终高于(通常高得多)其事件字节数。

关于ios - 常驻内存与事件字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18624152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com