gpt4 book ai didi

ios - iPhone的堆栈大小是固定的吗?

转载 作者:技术小花猫 更新时间:2023-10-29 10:51:40 27 4
gpt4 key购买 nike

当我尝试调整线程的堆栈大小时:

- (void)testStack:(NSInteger)n {
NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(dummy) object:nil];
NSUInteger size = 4096 * n;
[thread setStackSize:size];
[thread start];
}

- (void)dummy {
NSUInteger bytes = [[NSThread currentThread] stackSize];
NSLog(@"%@", @(bytes));
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
for (NSInteger i = 126; i <= 130; i++) {
[self testStack:i];
}
return YES;
}

在输出中,大小没有改变:

2015-06-19 11:05:06.912 Stack[52982:2082454] 524288
2015-06-19 11:05:06.913 Stack[52982:2082457] 524288
2015-06-19 11:05:06.913 Stack[52982:2082456] 524288
2015-06-19 11:05:06.913 Stack[52982:2082458] 524288
2015-06-19 11:05:06.913 Stack[52982:2082455] 524288

iPhone 堆栈大小是固定的吗?

附注我正在 iPhone 6 Plus Debug模式下测试以上内容。

更新:在 MacBook 上的模拟器中运行时可以调整堆栈:

2015-06-19 11:25:17.042 Stack[1418:427993] 528384
2015-06-19 11:25:17.042 Stack[1418:427994] 532480
2015-06-19 11:25:17.042 Stack[1418:427992] 524288
2015-06-19 11:25:17.042 Stack[1418:427991] 520192
2015-06-19 11:25:17.042 Stack[1418:427990] 516096

最佳答案

堆栈大小在设备上是有限制的,在大多数情况下 iPhone OS 的主线程不能超过 1MB,也不能收缩。

辅助线程允许的最小堆栈大小为 16 KB,并且堆栈大小必须是 4 KB 的倍数。此内存空间在线程创建时在您的进程空间中留出,但与该内存相关联的实际页面在需要时才会创建。

关于ios - iPhone的堆栈大小是固定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929305/

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