#java #kotlin #kotlin-inline-class
#ява #котлин #kotlin-встроенный класс
Вопрос:
Итак, у нас есть оболочка 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
работать с примитивами, представляющими собственные ресурсы вне кучи, без необходимости оборачивать их в классы
Комментарии:
1. Может быть, использовать тип объекта, например, Long и полагаться на автоматическую упаковку?
2. Что вы подразумеваете под «полагаться на автоматическую упаковку»?
3.
Cleaner
и off-heap являются взаимоисключающими.Cleaner
и примитивы являются взаимоисключающими. Какова ваша реальная цель?4. Реплицировать
Unique
дескриптор vulkan hpp для автоматического управления ресурсами