在过去的两天里,我一直在努力弄清楚为什么这种简单的 AWSS3 配置设置可能会造成 5000 多次内存泄漏。这是我在 AppDelegate 中运行的代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// SetUp AWS Config
let myIdentityPoolId = Constants.AWS_IDENTITY_POOL_ID
let credentialsProvider: AWSCognitoCredentialsProvider = AWSCognitoCredentialsProvider(regionType: .USWest2,
identityPoolId: myIdentityPoolId)
if let configuration = AWSServiceConfiguration(region: .USWest2, credentialsProvider:credentialsProvider) {
AWSS3.register(with: configuration, forKey: "defaultKey")
}
return AWSMobileClient.sharedInstance().interceptApplication(application,
didFinishLaunchingWithOptions: launchOptions)
}
使用 Instruments,我测试了删除我共享的所有代码(返回 AWSMobileClient.sharedInstance().interceptApplication 除外)并发现我没有内存泄漏,但是一旦我将它添加回来,我就结束了所有的泄漏……是什么原因造成的?
如果有帮助,我想列出我的 AWS 存储桶中使用以下代码的对象:
let listRequest: AWSS3ListObjectsRequest = AWSS3ListObjectsRequest()
let s3 = AWSS3.s3(forKey: "defaultKey")
listRequest.bucket = Constants.AWS_BUCKET
listRequest.prefix = Constants.SPECIAL_PREFIX
s3.listObjects(listRequest).continueWith { (task) -> AnyObject? in
}
我是否犯了明显的错误?
最佳答案
如果您的应用程序可以处理这些漏洞,那么您只需提交错误即可 here并等待修复。
正如您所见here,他们似乎很早就继承了这些漏洞和 here .本期S3 multipart upload memory leak仍处于打开状态并标记为错误,因此您需要等到这些问题得到修复。
关于swift - 注册 AWSS3 配置造成 5000 多次内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074616/