Совместное использование объектов через процессы Java

При инициализации массива C позволяет Вам заполнять его значениями. Так

char s[100] = "abcd";

в основном то же как [1 113]

int s[3] = { 1, 2, 3 };

, но оно не позволяет Вам делать уроки, так как s массив и не свободный указатель. Значение [1 114]

s = "abcd" 

должно присвоить значение указателя abcd к s, но Вы не можете измениться s с тех пор, ничто не будет указывать на массив.
Это может и действительно работать, если s char* - указатель, который может указать на что-либо.

, Если Вы хотите скопировать строку простое использование strcpy .

8
задан Stu Thompson 9 June 2010 в 08:43
поделиться

4 ответа

Если вы хотите делиться объектами, лучший способ - использовать потоки вместо отдельного процесса. Процессы не могут совместно использовать память (кроме как через JNI), поэтому вам придется копировать большой объект вперед и назад в сериализованной форме либо через файлы, либо через соединение с сокетом RMI (последнее является лучшим вариантом, поскольку приводит к внутренней синхронизации) .

3
ответ дан 6 December 2019 в 00:07
поделиться

Вы можете открыть службу, чтобы разрешить доступ к данным из объекта. Сравнительно просто настроить межпроцессное взаимодействие с помощью RMI. Там будут накладные расходы IPC, поэтому он не будет таким производительным, как локальный доступ, мелкозернистый доступ станет дорогим, но если вы получаете сводные или другие агрегированные данные, это может быть достойной моделью.

Вы не делаете этого. Я не говорю, почему это отдельные процессы. У вас есть возможность загрузить код вашего дочернего процесса прямо в родительский? Возможна динамическая загрузка и разгрузка.

1
ответ дан 6 December 2019 в 00:07
поделиться

Нет, в Java нет поддержки разделяемой памяти.

Самый простой способ решить эту проблему - сериализовать объект во временный файл, а затем десериализуйте его обратно в новую JVM.

0
ответ дан 6 December 2019 в 00:07
поделиться

Я думаю, вы можете использовать для этих целей распределенные кеши (EHCache, memcached и так далее ...)

0
ответ дан 6 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: