内存是iphone ipad应用程序的一个问题,特别是对于ipad,如果想要做一些大事.
那么,这两个代码片段可以1.获得设备的当前可用内存; 2.强制释放记忆.
我们可以在应用程序中使用它吗?appstore会允许吗?
#import <mach/mach.h>
#import <mach/mach_host.h>
static void print_free_memory () {
mach_port_t host_port;
mach_msg_type_number_t host_size;
vm_size_t pagesize;
host_port = mach_host_self();
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
host_page_size(host_port, &pagesize);
vm_statistics_data_t vm_stat;
if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS)
NSLog(@"Failed to fetch vm statistics");
/* Stats in bytes */
natural_t mem_used = (vm_stat.active_count +
vm_stat.inactive_count +
vm_stat.wire_count) * pagesize;
natural_t mem_free = vm_stat.free_count * pagesize;
natural_t mem_total = mem_used + mem_free;
NSLog(@"used: %u free: %u total: %u", mem_used, mem_free, mem_total);
}
Run Code Online (Sandbox Code Playgroud)
免费记忆
/* Allocate the remaining amount of free memory, minus 2 megs * /
size_t size = freemem - (2*1024*1024);
void *allocation = malloc(size);
bzero(allocation, size);
free(allocation);
Run Code Online (Sandbox Code Playgroud)
Jas*_*ien 13
如果你问我,iOS会很好地管理它的内存资源.如果您的应用程序存在内存问题,则需要分析并确定这些内存问题并对其进行优化.
从用户的角度考虑它.特别是在支持多任务处理的iPhone/iPad(4.2)上.用户在后台拥有他/她希望在一段时间内返回的应用程序.他们打开你的应用程序 - 它为所有人创造了自己的空间 - 然后他们试图回到他们的其他应用程序,却发现他们已被杀死,因为你的应用程序杀了他们.
我不会太高兴,并且可能会强烈重新考虑将来再次使用您的应用程序.
Apple可能会有相同的意见.他们的工作是确保用户获得最佳体验,这就是为什么他们有规则和指导方针.
无论您的应用程序是否会被拒绝,我都不知道(它应该是,但我不知道Apple是否会明确测试此类行为).
然而,这是一个可怕的想法,无论如何都不会起作用.
正如Jasarien所说,您的应用程序将在可能与其他应用程序共享资源的环境中运行.这是一个更好的解决方案,可以优化应用程序中的内存使用 - 最大限度地减少内存使用 - 并使您的应用程序尽可能地系统友好.资源稀缺,谨慎使用.
但是,"分配剩余内存"代码是假的.无法保证空闲内存是连续的.分配很可能会失败.
真正的问题是你的应用程序为什么要使用如此多的内存以及你为减少它而采取的措施?
| 归档时间: |
|
| 查看次数: |
6625 次 |
| 最近记录: |