如何解决VNDetectHumanHandPoseRequest发生内存泄漏
我注意到,当我使用VNDetectHumanHandPoseRequest时,我的MacOS应用程序的内存使用量增加了约84MB,即使在释放所有关联对象之后,这种额外的内存使用率仍然存在。
我能够创建一个小的示例代码来重现此行为。
https://github.com/snakajima/HandPose/tree/main
class ViewController: NSViewController {
private var gestureEnabled = false
private var handPoseRequest:VNDetectHumanHandPoseRequest?
// ...
@IBAction func toggleGesture(_ sender:NSMenuItem) {
gestureEnabled = !gestureEnabled
print("toggleGesture",gestureEnabled)
sender.state = gestureEnabled ? .on : .off
if gestureEnabled {
handPoseRequest = VNDetectHumanHandPoseRequest()
} else {
handPoseRequest = nil
}
}
extension ViewController: AVCaptureVideoDataOutputSampleBufferDelegate {
public func captureOutput(_ output: AVCaptureOutput,didOutput sampleBuffer: CMSampleBuffer,from connection: AVCaptureConnection) {
// no operation
guard let request = handPoseRequest else {
return
}
let handler = VNImageRequestHandler(cmSampleBuffer: sampleBuffer,orientation: .up,options: [:])
do {
try handler.perform([request])
let results = request.results
if let count = results?.count,count > 0 {
print("results.count",count)
}
} catch {
print("Vision Error",error.localizedDescription)
}
}
}
我想知道我做错了什么,考虑这样一个简单的代码,这不太可能。
此内存使用量可能是由Vision / CoreML内部的纹理缓存引起的。在这种情况下,我想知道如何刷新它(我没有对Vision / CoreML中的纹理缓存的引用)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。