![]() |
|
Модераторы: LSD, AntonSaburov Страницы: (8) Все « Первая ... 3 4 [5] 6 7 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| Prol |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
gc() - принудительный вызов сборщика мусора. Когда управление выходит из вызванного gc(), мусор уже убран.
|
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Prol, это ошибка. Вызов сборщика мусора не гарантирован ВАЩЕ. Кое-как им можно управлять с помощью ключей запуска JVM, но это весьма ограниченное управление.
Раньше еще использовался такой прием - вызов gc() несколько раз подряд. Сейчас даже он уже не прокатывает. Это сообщение отредактировал(а) batigoal - 15.1.2008, 09:40 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| serger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 1 Всего: 5 |
да даже если бы и срабатывал сразу, к чему это приводило бы?
Вот тут сайт про JVM. http://blogs.sun.com/vmrobot/category/GC или вот есть такие шаманства (отсюда): Следующий метод освобождает всю возможную память:
Это сообщение отредактировал(а) serger - 15.1.2008, 09:57 -------------------- упс! |
|||
|
||||
| Prol |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Что значит "ошибка"? В одном из базовых классов Java ошибка? Его нельзя вызывать несколько раз подряд, это асинхронное событие имеющее длительно время исполнения. Сборщик мусора нужно вызывать не в основном потоке приложения, а делать для него отдельный поток и пользоваться как при асинхронном вводе-выводе, наверна, да? :о) |
|||
|
||||
| intr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.12.2005 Репутация: 1 Всего: 2 |
Вообщем пообщался с одним умным человеком
gc() не просто удалят все неиспользуемые объекты из памяти он при вызове решает стоит удалять объекты из пямяти или нет на основе времени жизни объекта, количества свободной (занятой) ОЗУ и т.д. то есть он попробует почистить память Так по крайней мере в стандартной Java машине p/s Кстати если нужен нормальный runtaime и адекватное время исполнение, то скорее всего надо использовать специальное железо от SUN и специальную сборку Java машины. Но стандартная сборка Java машины для этого точно не подходит! Но это ИМХО. --------------------
Исследователь бытия и по совместительству Java-developer |
|||
|
||||
| batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Что значит "нельзя"? Можно. Но исполняться оно будет долго. Ошибка заложена уже в самой идее - управлять памятью в managed-языке. Приложение не может управлять своей выполняющей средой, оно может лишь рекомендовать ей что-то сделать, что и подтвержадется приведенным куском доки:
Зачем? В том же фрагменте написано:
Рекомендую почитать статьи по тюнингу сборщика мусора, в Интернете их немало. Добавлено через 1 минуту и 21 секунду Для этого и создана Real-Time Java. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
| intr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.12.2005 Репутация: 1 Всего: 2 |
Вообщем пообщался с одним умным человеком
gc() не просто удалят все неиспользуемые объекты из памяти он при вызове решает стоит удалять объекты из пямяти или нет на основе времени жизни объекта, количества свободной (занятой) ОЗУ и т.д. то есть он попробует почистить память Так по крайней мере в стандартной Java машине p/s Кстати если нужен нормальный runtaime и адекватное время исполнение, то скорее всего надо использовать специальное железо от SUN и специальную сборку Java машины. Но стандартная сборка Java машины для этого точно не подходит! Но это ИМХО. --------------------
Исследователь бытия и по совместительству Java-developer |
|||
|
||||
| Prol |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Мы отвлеклись от темы. :о)
Как обратиться к объекту (экземпляру класса), находящемуся в другом приложении? |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Я бы тогда пошел по другому пути - повышение надежности и отказоустойчивости. Например запускаем Application Server у которого работает два приложения - одно хранит данные в некотором кэше (хранилище), другое (логика) - выполняет какие-либо действия с этими данными. Падение Application Server - ну надо очень постараться. Даже если при выполнении логики что-то отвалится, то хранилище должно (и будет) нормально работать. Сервер просто подымет еще одну копию логики. И все. Хотя инициализация трех миллионов объектов - это как-то странно. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Вам уже ответили - никак. Связь только через файл, отображаемый на память или сокеты (или любой другой более высокоуровневый механизм). -------------------- ![]() ![]() |
|||
|
||||
| ecologist |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: 2 Всего: 9 |
Ну вообщем-то никто не мешает исполmзовать RMI или просто сокеты для общения приложений. Но правда в таком случае эффективность работы наверняка снизится.
Если же иметь в виду общую память, которую можно разделять между процессами, то это особенности ОС и кроссплатформенность JAVA на такие вещи не рассчитана. Я бы тоже задумался (как и AntonSaburov) над проектированием системы. |
|||
|
||||
| Prol |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Что подразумевается под "Хранилищем"? Образ памяти или БД? Application Server предоставляет доступ двум приложениям к одной памяти? Добавлено через 2 минуты и 17 секунд
Как сделать в Java связь через файл, отображаемый на память? |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Нет, но он может объединять несколько серверов в кластер, обеспечивая тем самым отказоустойчивость. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
В этой теме об этом уже говорили - http://forum.vingrad.ru/index.php?showtopi...t&p=1376155. -------------------- ![]() ![]() |
|||
|
||||
| Prol |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 11.1.2008 Где: Кыев, Украина Репутация: нет Всего: нет |
Спасибо, но в этот файл невозможно загрузить методы и передать им управление :о( |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |