Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместное использование памяти двумя приложениями, Как это сделать? 
V
    Опции темы
w1nd
Дата 16.1.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Prol @  16.1.2008,  11:31 Найти цитируемый пост)
Спасибо, но в этот файл невозможно загрузить методы и передать им управление :о(

Как и в любой другой файл. Но в этом нет и смысла - вам же нужно разделять данные, а не методы.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Prol
Дата 16.1.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(w1nd @ 16.1.2008,  12:39)
Цитата(Prol @  16.1.2008,  11:31 Найти цитируемый пост)
Спасибо, но в этот файл невозможно загрузить методы и передать им управление :о(

Как и в любой другой файл. Но в этом нет и смысла - вам же нужно разделять данные, а не методы.

Именно необходимо разделять методы :о)
Мне не нужны два разных приложения, у которых каждого свой new и свой код методов.

Мне нужно, чтобы два одинаковых приложения разделяли один new в одной области памяти и использовали одну копию методов над одной копией объектов.
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 16.1.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Prol @  16.1.2008,  13:20 Найти цитируемый пост)
Мне нужно, чтобы два одинаковых приложения разделяли один new в одной области памяти и использовали одну копию методов над одной копией объектов. 

А если упадет именно в таком методе, то какая тут надежность ?

Проблема как я понимаю в том, чтобы иметь надежное приложение, которое данные позволяет сохранить в случае падения логики. Но тогда надо разделять данные и логику.

Ощущение, что Вы не очень понимаете, что надо. Это не сомнение в профессионализме - просто может пока задача не совсем очевидна.
PM MAIL WWW ICQ   Вверх
Prol
Дата 16.1.2008, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 16.1.2008,  13:42)
А если упадет именно в таком методе, то какая тут надежность ?


Так упадёт же второе приложение. А первое сохранит все данные уже размещённые в памяти.
И тогда нужно будет перезапустить второе приложение, которое продолжит работу с откатом последней транзакции. :о) 
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 16.1.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(Prol @  16.1.2008,  13:49 Найти цитируемый пост)
Так упадёт же второе приложение. А первое сохранит все данные уже размещённые в памяти.

Но в таком случае логика и данные разделены. И второе приложение просто проверяет - не упало ли первое. И в нужный момент подхватывает. Значит именно данные лежат в shared memory. А все методы - в логике. Или классов тоже три миллиона ?

Вы случайно не введены в заблужение по поводу того, что методы создаются для каждого объекта ? Это не так - один метод работает для всех  объектов этого класса.

Добавлено через 8 минут и 20 секунд
Похоже я что-то понимаю - логика работает в объектах и меняет их состояние. Надо каким-то образом это состояние хранить. А т.к. перемешана логика с данными в объектах, то точно разделить не получается. Значит нужен механизм, которые постоянно сохраняет значения полей объектов где-то. Что конечно же усложнит работу и снизит производительность.

Либо сделать разделение на объекты, которые зранят данные и объекты, которые их изменяют. В терминах EnterpriseJavaBeans это EntityBean и SessionBean. Видимо так и надо проектировать.
PM MAIL WWW ICQ   Вверх
Prol
Дата 16.1.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 16.1.2008,  13:42)
Ощущение, что Вы не очень понимаете, что надо. 

Ок, попробую ещё раз объяснить.

ОС убивает то приложение, в контексте которого произошла ошибка. И освобождает память убитого. Но если приложение пользуется памятью другого приложения, то ОС не освобождает память непричастного.

Посмотрите картинку, как оно сделано на С.
Можно ли так сделать на Java?


Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  Shm.JPG 11,32 Kb
PM MAIL WWW ICQ   Вверх
LSD
Дата 16.1.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Нафига код методов помещать в общую память? У вас что, приложение само себя модифицирует в процессе работы?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Prol
Дата 16.1.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 16.1.2008,  13:55)
Но в таком случае логика и данные разделены.

Методы и объекты всегда разделены :о)
Методы ведь общие для всего класса объектов.

Смысл в том, что второе приложение пользуется методами и объектами первого приложения, но в случае сбоя ОС снимает именно второе приложение :о) А первое сохраняет загруженными и методы и объекты. 
PM MAIL WWW ICQ   Вверх
LSD
Дата 16.1.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Prol @  16.1.2008,  14:16 Найти цитируемый пост)
ОС убивает то приложение, в контексте которого произошла ошибка. И освобождает память убитого. Но если приложение пользуется памятью другого приложения, то ОС не освобождает память непричастного.

На Java тако практически не реально, байткод не может вызвать крах JVM. Сам упасть - сколько угодно, но свалить JVM без использования native методов не реально (ошибки в самой JVM редки).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Prol
Дата 16.1.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(LSD @ 16.1.2008,  14:20)
Нафига код методов помещать в общую память? У вас что, приложение само себя модифицирует в процессе работы?

Для того, чтобы второе приложение могло вызвать методы, которые лежат в общей памяти :о)

Добавлено через 1 минуту и 30 секунд
Цитата(LSD @ 16.1.2008,  14:22)
На Java тако практически не реально, байткод не может вызвать крах JVM. Сам упасть - сколько угодно, но свалить JVM без использования native методов не реально (ошибки в самой JVM редки).

Подставьте вместо ОС слово JVM.
Как сделать, чтобы второе приложение вызывало методы первого над объектами первого?
PM MAIL WWW ICQ   Вверх
LSD
Дата 16.1.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Prol @  16.1.2008,  14:23 Найти цитируемый пост)
Для того, чтобы второе приложение могло вызвать методы, которые лежат в общей памяти :о) 

И что? Что тебе мешает дать ему свою копию классов?

Добавлено через 1 минуту и 39 секунд
Да и зачем ему что-то там вызывать, если он как ты говоришь используется только для того, чтобы после падения данные остались в памяти.

Добавлено через 3 минуты и 1 секунду
Цитата(Prol @  16.1.2008,  14:23 Найти цитируемый пост)
Как сделать, чтобы второе приложение вызывало методы первого над объектами первого? 

Если ты хочешь все делать внутри одной JVM, то варианты решения тебе уже неоднократно предлагали, повторять не буду.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Prol
Дата 16.1.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата
Цитата(Prol @  16.1.2008,  14:23 Найти цитируемый пост)
Для того, чтобы второе приложение могло вызвать методы, которые лежат в общей памяти :о) 


И что? Что тебе мешает дать ему свою копию классов?


Мне не нужна вторая копия тех же методов, во-первых. А во-вторых мой менеджер памяти должен быть в единственном экземпляре но доступен из обоих приложений для управления распределением общей разделяемой памяти для объектов.

Цитата

Да и зачем ему что-то там вызывать, если он как ты говоришь используется только для того, чтобы после падения данные остались в памяти.


Первое приложение не совсем спит, оно просто в это время делает непрерывный бекап в БД, не мешая второму работать с объектами. :о)

Цитата

Цитата(Prol @  16.1.2008,  14:23 Найти цитируемый пост)
Как сделать, чтобы второе приложение вызывало методы первого над объектами первого? 

Если ты хочешь все делать внутри одной JVM, то варианты решения тебе уже неоднократно предлагали, повторять не буду.


Извините, но RMI и JMX не подходит, потому что сериализует/десереализует объекты между приложениями. 

А мне нужно из второго приложения выполнять методы первого над объектами первого, и если JVM прибъёт второе приложение за шо-нибуть некорректное. то в первом остануться все методы и все объекты на момент последней незавершённой транзакции.

Это сообщение отредактировал(а) Prol - 16.1.2008, 14:52
PM MAIL WWW ICQ   Вверх
fixxer
Дата 16.1.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Prol, сколько можно тупить? (при всем уважении к возрасту и прочим регалиям). 
Вам уже неоднократно сказали, что Java это не C и то что прокатывает во втором не обязано 
работать также в первом.

Мое мнение, что на Java Вам переходить не стоит.


--------------------
user posted image
PM MAIL ICQ   Вверх
Prol
Дата 16.1.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(fixxer @ 16.1.2008,  14:43)
Prol, сколько можно тупить? (при всем уважении к возрасту и прочим регалиям). 
Вам уже неоднократно сказали, что Java это не C и то что прокатывает во втором не обязано 
работать также в первом.


Так что, даже если я откомпилю приложения Java в нативный код и они будут работать без JVM, то всё равно они не смогут пользоваться общей разделяемой памятью? ;о)))
PM MAIL WWW ICQ   Вверх
fixxer
Дата 16.1.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Цитата(Prol @ 16.1.2008,  14:46)
Так что, даже если я откомпилю приложения Java в нативный код и они будут работать без JVM, то всё равно они не смогут пользоваться общей разделяемой памятью? ;о)))

Попробуйте ;)

Добавлено через 2 минуты и 15 секунд
Цитата(Prol @ 16.1.2008,  14:42)
Извините, но RMI и JMX не подходит, потому что сериализует/десереализует объекты между приложениями. 

А мне нужно из второго приложения выполнять методы первого над объектами первого, и если JVM прибъёт второе приложение за шо-нибуть некорректное. то в первом остануться все методы и все объекты на момент последней незавершённой транзакции.

Непонятно, чем здесь помешает RMI?


--------------------
user posted image
PM MAIL ICQ   Вверх
Страницы: (8) Все « Первая ... 4 5 [6] 7 8 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.