如何在Swift中跟踪堆栈内存或值类型对象?

kyxcudwk  于 2022-12-28  发布在  Swift
关注(0)|答案(1)|浏览(129)

我试图用Instrument工具查看堆栈内存上的结构体内存分配,但我只看到了堆分配。
Instrument中是否有一个选项可以查看堆栈内存的分配情况?

//代码

struct ContentView: View {
 @State var arr: [Model] = [] 
 var body: some View {
    VStack {
        Text("Hello, world!")
    }
    .task {
        for _ in 0...5000 {
           arr.append(Model())
        }
    }
 }
}

//结构模型

struct Model {
 let id: Int = 1
}
thtygnil

thtygnil1#

Swift中的数组实际上是一个struct,有一个引用计数的对象来保存数据--这使得给一个有一百万个元素的数组赋值变得更快。实际的数据总是在堆上。(如果数据量很小的数组不做任何堆分配,我不会感到惊讶,例如一个只有一个对象引用的数组)。

相关问题