AudioKit AKWaveTable 内存泄漏
AudioKit AKWaveTable memory leak
我不知道是我的问题还是我发现了 AKWaveTable 的某种问题。
基本上当我加载一个音频文件(一个短的,大约 7 秒)并将其分配给 AKWaveTable 进行采样然后我尝试用另一个文件替换它时,新文件被加载,但分配的内存保持不变在成长中。
这是伪代码:
class Element {
var player:AKWaveTable?
//other stuff
init(_ path:String){
let temp_file = try AKAudioFile(readFileName: path)
self.player = AKWaveTable(audioFile: temp_file)
}
}
在我的代码中的某个时刻:
//declare array of class Element
var sample:[Element] = []
//and put something into it's elements
sample[n] = Element("path/to/file.wav")
//do some stuff
//then replace that sample with another file
sample[n] = Element("path/to/another/file.wav")
使用 AKPlayer 完成的相同过程工作正常,但我确实需要 AKWaveTable 以获得更好的性能。
在连续替换音频样本后,分配的内存增长非常快,高达 900MB!
我做错了什么?
任何帮助,将不胜感激,
谢谢!
该应用程序适用于 MacOS。
Swift 4.2
AudioKit 4.5.2
Xcode 10.0
MacOS High Sierra 10.13.6
还有一点要指出,继续创建新的 AKWavetables 可能不是一个好主意。例如,你不能用音频引擎 运行 做到这一点。
如果可以,将最大大小设置为最长的样本,然后在需要时使用 load(file: AKAudioFile) 加载新文件。
漏洞已修复,将在下一版本的 AK 中发布。
谢谢大家
我不知道是我的问题还是我发现了 AKWaveTable 的某种问题。
基本上当我加载一个音频文件(一个短的,大约 7 秒)并将其分配给 AKWaveTable 进行采样然后我尝试用另一个文件替换它时,新文件被加载,但分配的内存保持不变在成长中。
这是伪代码:
class Element {
var player:AKWaveTable?
//other stuff
init(_ path:String){
let temp_file = try AKAudioFile(readFileName: path)
self.player = AKWaveTable(audioFile: temp_file)
}
}
在我的代码中的某个时刻:
//declare array of class Element
var sample:[Element] = []
//and put something into it's elements
sample[n] = Element("path/to/file.wav")
//do some stuff
//then replace that sample with another file
sample[n] = Element("path/to/another/file.wav")
使用 AKPlayer 完成的相同过程工作正常,但我确实需要 AKWaveTable 以获得更好的性能。
在连续替换音频样本后,分配的内存增长非常快,高达 900MB!
我做错了什么? 任何帮助,将不胜感激, 谢谢!
该应用程序适用于 MacOS。
Swift 4.2
AudioKit 4.5.2
Xcode 10.0
MacOS High Sierra 10.13.6
还有一点要指出,继续创建新的 AKWavetables 可能不是一个好主意。例如,你不能用音频引擎 运行 做到这一点。
如果可以,将最大大小设置为最长的样本,然后在需要时使用 load(file: AKAudioFile) 加载新文件。
漏洞已修复,将在下一版本的 AK 中发布。
谢谢大家