У меня есть сервис, который считывает данные датчика в режиме реального времени.Данные считываются последовательно, 4 разных типа, каждый с интервалом около 50 мс.На самом деле данные датчика поступают через bluetooth, но сервис считывает их из inputStream.
Теперь крайне важно, чтобы данные были доставлены с максимальной точностью при получении, и именно там у меня возникла проблема сдс.Если gc переместится между чтением данных и отметкой времени, даже 20 мс приведут к ужасным результатам.Также крайне важно, чтобы у данных никогда не было больших промежутков, поскольку у меня уже есть 200 мс между одними и теми же типами данных.
С другой стороны, я хочу, чтобы данные передавались в реальном времени в приложение (мини-задержкавсе в порядке).Мне удалось написать сервис так, чтобы он распределял все свои объекты в начале и никогда не создавал мусор для GC.Но для IPC мне нужно создать разлагаемые объекты для отправки их в приложение.
Вопрос 1: если я создаю такие объекты и отправляю их через приложение IPC, на чьей памяти они существуют?Поскольку 2 процесса не разделяют память.
Вопрос 2: стоит ли мне производительность при использовании IPC?потому что я мог бы просто заставить службу работать в одном и том же процессе и делиться данными в 10 раз проще.
Приложение будет иметь GC, поэтому, если служба работает в том же процессе, существует опасность нарушения работы GCобработка данных в реальном времени.Однако, если я разделю их на 2 процесса, я боюсь, что IPC будет стоить мне некоторой производительности, которая может перевесить проблему GC.
Служба работает только для одного приложения, но должна работать как можно непрерывнее и доставлять свои данные.в режиме реального времени, насколько это возможно.Так поставить его в свой процесс или нет?