您的位置:首页 > 房产 > 建筑 > ai自动设计logo_郑州app制作开发_cpa推广联盟平台_杭州百度seo优化

ai自动设计logo_郑州app制作开发_cpa推广联盟平台_杭州百度seo优化

2025/4/8 5:03:39 来源:https://blog.csdn.net/tongwei117/article/details/145675130  浏览:    关键词:ai自动设计logo_郑州app制作开发_cpa推广联盟平台_杭州百度seo优化
ai自动设计logo_郑州app制作开发_cpa推广联盟平台_杭州百度seo优化

获取应用占用内存

  1. 获取应用进程占用内存
- (NSUInteger)memoryUsage {task_vm_info_data_t vmInfo;mach_msg_type_number_t count = TASK_VM_INFO_COUNT;kern_return_t result = task_info(mach_task_self(), TASK_VM_INFO, (task_info_t)&vmInfo, &count);if (result != KERN_SUCCESS) {return 0;}// 单位为字节return (NSUInteger)vmInfo.phys_footprint; 
}
  1. 获取free内存(与xcode基本一致)
- (double)usageComparisonFree {mach_port_t host_port = mach_host_self();mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;vm_size_t page_size;vm_statistics64_data_t vminfo;host_page_size(host_port, &page_size);host_statistics64(host_port, HOST_VM_INFO64, (host_info64_t)&vminfo,&count);uint64_t free_size = (vminfo.free_count + vminfo.external_page_count + vminfo.purgeable_count - vminfo.speculative_count) * page_size;return free_size / 1024.0 / 1024.0;
}
  1. 获取APP可用内存
- (NSInteger)memoryUsageLimitByByte {NSInteger memoryLimit = 0;// 获取当前内存使用数据if (@available(iOS 13.0, *)) {task_vm_info_data_t vmInfo;mach_msg_type_number_t count = TASK_VM_INFO_COUNT;kern_return_t kr = task_info(mach_task_self(), TASK_VM_INFO, (task_info_t)&vmInfo, &count);if (kr == KERN_SUCCESS) {// 间接获取一下当前进程可用的最大内存上限// iOS13+可以这样计算:当前进程占用内存+还可以使用的内存=上限值NSInteger memoryCanBeUse = (NSInteger)(os_proc_available_memory());if (memoryCanBeUse > 0) {NSInteger memoryUsed = (NSInteger)(vmInfo.phys_footprint);memoryLimit = memoryUsed + memoryCanBeUse;}}}if (memoryLimit <= 0) {NSInteger deviceMemory = [NSProcessInfo processInfo].physicalMemory;memoryLimit = deviceMemory * 0.55;}if (memoryLimit <= 0) {// 这个值一般要小很多, 上面都获取不到才使用mach_port_t host_port = mach_host_self();mach_msg_type_number_t host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);vm_size_t page_size;vm_statistics_data_t vm_stat;kern_return_t kr;kr = host_page_size(host_port, &page_size);if (kr == KERN_SUCCESS) {kr = host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size);if (kr == KERN_SUCCESS)            {memoryLimit = vm_stat.free_count * page_size;}}}// 单位 Bytereturn memoryLimit;
}
  1. 获取应用cpu使用情况
- (float)cpuUsage {kern_return_t kr;task_info_data_t tinfo;mach_msg_type_number_t task_info_count = TASK_INFO_MAX;kr = task_info(mach_task_self(), TASK_THREAD_TIMES_INFO, (task_info_t)tinfo, &task_info_count);if (kr != KERN_SUCCESS) return -1;task_thread_times_info_t times_info = (task_thread_times_info_t)tinfo;double userTime = times_info->user_time.seconds + times_info->user_time.microseconds / 1e6;double systemTime = times_info->system_time.seconds + times_info->system_time.microseconds / 1e6;double totalTime = userTime + systemTime;static double lastTotalTime = 0;static NSTimeInterval lastSamplingTime = 0;NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];NSTimeInterval elapsedTime = currentTime - lastSamplingTime;float cpuUsage = 0.0;if (lastSamplingTime != 0 && elapsedTime > 0) {cpuUsage = (totalTime - lastTotalTime) / elapsedTime * 100;}lastTotalTime = totalTime;lastSamplingTime = currentTime;return cpuUsage;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com