Разделяется ли Java System Class между процессами?

1

У меня вопрос относительно языка Java: в андроиде

я попытался изменить System.property X внутри процесса A, а затем активировал процесс B

(я подумал, что, возможно, снова инициализирует все System.properties)

(процесс B не видел измененного System.property X, как ожидалось),

затем я возобновил первый процесс и увидел, что измененный System.property все еще существует.

Я знаю, что класс System не может быть создан. поскольку это так,

Я думал, что он будет разделяться между всеми процессами.

но это не так.

Я понимаю, почему мы хотим, чтобы это произошло, но как это может быть, если System class не создается? какой механизм в Java вызывает такое поведение?

Спасибо за помощь

  • 0
    Не могу ничего сказать конкретно о среде Android (которая немного нестандартна), но в стандартной среде Java нет общей адресуемости между отдельными системными процессами. В большинстве систем каждый «процесс» имеет свое собственное адресное пространство, не зависящее от адресного пространства любого другого процесса, поэтому совместное использование невозможно. System нельзя создать, потому что Java определяет ее таким образом, а не из-за какого-либо совместного использования.
Теги:

2 ответа

1
Лучший ответ

какой механизм в Java вызывает такое поведение?

Хотя байт-код класса System используется совместно с процессами Dalvik VM, любые одноэлементные данные, которые могут храниться в классе System (или любом другом Java-классе ОС Android), не используются совместно с процессами Dalvik VM. Скорее, такие объекты создаются на локальном процессе "куча", не отличающаяся от любых других объектов.

  • 0
    спасибо за быстрый ответ, у вас есть идеи, где я могу найти его в исходном коде Android?
  • 0
    @nir: Что такое "это"?
Показать ещё 3 комментария
0

Как вы, наверное, знаете, Android поддерживает вашу деятельность, пока не решит, что ей нужны ресурсы для чего-то другого. Поэтому, когда вы "возобновили первый процесс и увидели, что измененный System.property все еще существует", вы, возможно, получили бы то же самое состояние, что и вы, как если бы вы переключали окна на свой рабочий стол.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню