Книга JNI немного краткая об этой ситуации, но вы можете понять это, если изучите ее достаточно долго.По сути, когда вы присоединяете собственный поток C к JVM, вы создаете локальный контекст, который может хранить некоторые локальные ссылки.
Эти локальные ссылки не будут никогда освобождаться, пока вы не освободите их вручную с помощьюDeleteLocalRef, или вы уничтожаете локальный контекст, вызывая DetachThread.Поскольку вы, вероятно, не выполняете много операций по присоединению и отсоединению к JVM, очень важно, чтобы вы вызывали DeleteLocalRef для каждой локальной ссылки, которую вы создаете.
Естественный следующий вопрос - почемувообще создавать глобальные ссылки, если локальные ссылки не получают GC до тех пор, пока JVM не будет отключена? "Ну, локальные ссылки не могут быть разделены между потоками.Поэтому вам все еще нужно создать глобальные ссылки для этого.