所以,我们有一个围绕vulkan的 kotlin 包装器,它依赖于 vulkan 标识符(通常是Long
s)的内联类
据我所知,Java(9+)Cleaner
应该只适用于类。
这里有一个例子
我试图修改它以使用普通原语运行
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
使用表示本机堆外资源的原语,而不必将它们包装在类中