Pull to refresh

Comments 21

Хм, когда это boost стал стандартной библиотекой? Вот stl стандартная, даже имя на это намекает, а boost совсем не стандартная.
Согласен, исправляю
де-факто вполне себе стандартная библиотека.
Они в Комитете работают, на Стандарт языка С++ оказывают сильное влияние.
>> Находим параметер для JVM: -XX:ThreadStackSize=
Случайно не с java.lang.OutOfMemoryError: Java heap space падало? Ато была у нас такая плавающая ошибка… я вот сейчас прочитал и подумалось, что ситуация похожая очень…
Кажется нет (это было год назад, а вот вторая проблема — сегодня).
Там же явовского эксепшена быть не могло — JVM падал как процесс
Да, правильно… как то упустил из виду «JVM падает».
немоного оффтоп: как-то проводили собеседования на вакансию сапортера для нескольких Javа SDK. Среди множества кандитатов-программистов меньше половины знали про опции JVM. Даже не все о Xmx слышали. И этому я никак не мог найти объяснение.
На эту тему было тут уже уйму топиков. Большая часть программистов — люди не интересующиеся своей работой. Человек пилит свою болванку и не видит дальше своего носа
Вот. Вот… Сборшик мусора заботиться о Вас: )
GC не заботится о сохранности ссылок для JNI-вызовов.
Спасибо, статья полезная, но все же с исходным утверждением «GC не заботится о сохранности ссылок для JNI-вызовов» я не соглашусь. JVM заботится о том, чтобы ссылки на Java-объекты из native-методов были валидны даже после GC, а именно:
— что локальные ссылки валидны до тех пор, пока не завершится native-метод, в контексте которого эти ссылки созданы;
— что глобальные ссылки валидны на протяжении всей работы JVM, пока не вызывана функция DeleteGlobalRef.
Исправил. Вроде всюду.
Я не в России живу и привык к описанию вех этих дел на английском
ну и тогда в догонку
дерево большой глибины.
У меня подобное было. После пары часов танцев с бубном удалось выяснить что JVM падает в момент вызова джавы из нейтив кода. Дабы не танцевать больше с бубном переписал код так, чтобы никаких колбеков не использовалось. Благо архитектура позволяла.

Спасибо за объяснение. В следующий раз буду знать как бороться с этой пакостью!
Если можно переписать — это надежнее. У меня легаси код — его переписывать я не могу
Не совсем понял специфику проблемы. Если вызов и callback идут в одном треде, то GC не должен вообще ничего удалять. Если же Вы делаете вызовы асинхронно, сначала передав указатель на callback, и затем ждете, что из JNI он будет вызван, то ссылку на callback нужно «закрепить» при помощи jobject NewGlobalRef(JNIEnv *env, jobject obj);
Это был JNA, а не JNI. И колбек там чисто явовский
Sign up to leave a comment.

Articles