因此,我们在vulkan周围有一个kotlin包装器,该包装器依赖于内联类的vulkan标识符(通常为Long
s)
据我了解,Java(9+)Cleaner
应该只适用于类。
Here一个例子
我试图对其进行修改,以便与普通图元一起运行
fun main() {
val cleaner = Cleaner.create()
for (i in 0..9) {
val id = Integer.toString(i)
val vkObject = 0L + i
cleaner.register(vkObject, CleanerRunnable(id))
}
//myObjects are not reachable anymore
//do some other memory intensive work
for (i in 1..10000) {
val a = IntArray(10000)
try {
Thread.sleep(1)
} catch (e: InterruptedException) {
}
}
}
但不幸的是没有成功。
所以我的问题是,是否有一种方法可以使Cleaner
使用表示本地堆外资源的原语,而不必将它们包装在类中