Что такое 'JNI Глобальная ссылка'

Аргумент TypeError: write () должен быть str, а не PilImage

blockquote>

Это указывает на то, что img имеет тип PilImage, тогда вы можете использовать способ сохранения a PilImage , чтобы сохранить его. Например,

img.save(path_qr_code)
23
задан j.davies 22 September 2008 в 00:01
поделиться

2 ответа

Википедия имеет хороший обзор Собственный Интерфейс Java , по существу это позволяет коммуникацию между Java и собственными библиотеками операционной системы, записанными на других языках.

JNI глобальные ссылки подвержены утечкам памяти, поскольку они автоматически не собраны "мусор", и программист должен явно освободить их. Если Вы не пишете, что любой JNI кодирует себя, возможно, что библиотека, которой Вы пользуетесь, имеет утечку памяти.

редактирование здесь является немного большим количеством информации о локальном по сравнению с глобальными ссылками, и почему глобальные ссылки используются (и как они должны быть освобождены)

11
ответ дан 29 November 2019 в 02:04
поделиться

Глобальная ссылка JNI - это ссылка из «родного» кода на объект Java, управляемый сборщиком мусора Java. Его целью является предотвращение сбора объекта, который все еще используется нативным кодом, но, похоже, не содержит живых ссылок в коде Java.

JFrame представляет собой java.awt.Window и связан с «собственным» объектом Window. Когда вы закончите работу с конкретным экземпляром JFrame, вы должны вызвать его метод dispose() для очистки.

Я не уверен, создает ли какой-либо нативный код глобальную ссылку на JFrame, но это кажется вероятным. Если это произойдет, это предотвратит сборку мусора JFrame. Если вы создаете много окон (или подклассов) и видите, что они никогда не собираются, убедитесь, что они удалены.

16
ответ дан 29 November 2019 в 02:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: