Java JNI. В чем преимущество GetString () по сравнению с GetStringCritical ()? - PullRequest
2 голосов
/ 07 июля 2010

Согласно документации JNI, GetStringCritical() отключает сборку мусора, пока вы держите некоторую память, управляемую JVM.Использование этого вместо GetString() подвергает ваш нативный риск риску тупика, если вы вызываете на уровень Java или выполняете операцию блокировки до вызова ReleaseStringCritical().Так в чем же преимущество функции Critical, и, если она синонимична, отключение сбора мусора при доступе к управляемой памяти JVM?

1 Ответ

4 голосов
/ 07 июля 2010

Первое исправление: согласно спецификациям, методы GetXxxCritical() могут отключить сборку мусора.

Так в чем же выгода Критической функции,

Преимущество использования методов GetXxxCritical() состоит в том, что они с большей вероятностью возвращают указатель на исходные данные, а не на копию данных. Это означает, что они могут быть быстрее. Конечно, это связано с затратами с точки зрения задокументированных ограничений / предостережений.

... и является ли это синонимом отключения сбора мусора при доступе к управляемой памяти JVM?

Ну, нет; смотри мое исправление. Методы могут отключить сборку мусора или могут не . Это будет зависеть от того, как ваша платформа реализует интерфейсы JNI, и, возможно, от других вещей, таких как опции сборщика мусора JVM.

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