Остановит ли сборщик мусора Java мои потоки POSIX, созданные из вызовов JNI?

У меня есть критичное ко времени приложение, которому необходимо отправлять датаграмму UDP по заданному расписанию. Допуск на джиттер на приемной стороне очень низкий. Реализация этого с помощью java ScheduledThreadPoolExecutor isn ' t адекватно, потому что, когда GC выполняет коллекцию «Stop the World», мой поток приостанавливается, пока GC выполняет свою работу.

Я хотел бы реализовать бизнес-логику на Java, реализуя критические по времени части с потоками POSIX на C ++ (Native кстати среда Linux). Это позволило бы нам сэкономить тысячи строк кода, написанного на Java, а также получить необходимую скорость от собственных системных вызовов.

Мой вопрос таков: если я вызываю функцию JNI, которая создает отдельный поток POSIX, этот поток быть "приостановлено", когда Java GC выполняет коллекцию "Stop the World"? Есть ли какие-нибудь подводные камни, на которые опытный гуру JNI хотел бы указать в этом подходе или любых альтернативных подходах, которые он мог бы предложить?

Как всегда, спасибо замечательному сообществу переполнения стека!

7
задан LPalmer 15 April 2011 в 15:29
поделиться