在iPad / iPhone应用程序中使用众所周知的免费内存代码是否合法?

内存是一个iphone ipad应用程序的问题,特别是对于ipad,如果你想做一些大事。

那么,这两个代码片段可以获得设备的当前可用内存; 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); } 

自由的记忆

 /* 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); 

如果你问我,iOS会很好地pipe理它的内存资源。 如果你的应用程序有内存问题,你需要分析和识别这些内存问题,并优化它们。

从用户的angular度考虑它。 特别是在多任务能力的iPhone / iPad(4.2)。 用户在后台有应用程序,他/她会在一段时间后想要回到。 他们打开你的应用程序 – 这些应用程序会为所有人腾出空间,然后尝试返回到其他应用程序,以便发现自己的应用程序已经杀死了应用程序。

我不会太高兴,可能会强烈重新考虑在未来再次使用您的应用程序。

苹果可能会有相同的意见。 他们的工作是确保用户有最好的体验,这就是为什么他们有规则和准则开始。

不pipe你的应用程序是否会被拒绝,我都不知道( 应该是,但是我不知道苹果是否会明确地testing这种行为)。

然而,这是一个可怕的想法,从头开始,无论如何不会工作。

正如Jasarien所说,您的应用程序将运行在可能与其他应用程序共享资源的环境中。 在应用程序中优化内存使用是一个好得多的解决scheme,以最大限度地减less内存使用,并尽可能使系统更友好。 资源稀缺,谨慎使用。

但是,“分配剩余内存”代码是假的。 不能保证可用内存将是连续的。 分配很可能会失败。

真正的问题是为什么你的应用程序使用这么多的内存,你做了什么来最小化?

Interesting Posts