Есть ли способ реализовать Cleaner с помощью других примитивов, кроме упаковки их в классы? - PullRequest
0 голосов
/ 24 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...