Итак, у нас есть оболочка kotlin около vulkan , которая опирается на встроенные классы для идентификаторов 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
работать с примитивами, представляющими собственные ресурсы вне кучи, без необходимости оборачивать их в классы