Как уменьшить время запуска и потребление памяти Java-программой? - PullRequest
2 голосов
/ 20 октября 2010

Я полагаю, что последняя версия обновления Java обеспечит лучшую производительность.

Я ищу способ реализации изоляции программных компонентов от бесконечных циклов или утечек памяти. Android изолирует каждое приложение в своем собственном процессе, Google Chrome изолирует каждую вкладку в своем собственном процессе.

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

Есть ли какая-либо альтернативная сборка или более контролируемый запуск, который достигнет этого?

Ответы [ 3 ]

2 голосов
/ 20 октября 2010

Если вашей целью является быстрый запуск, Java на ПК может оказаться не лучшим выбором. Это займет несколько секунд, потому что так долго загружается виртуальная машина с диска.

Если вы хотите, чтобы ваше приложение запускалось быстрее, вы можете легко открыть заставку, просто создайте модуль, который загружает только заставку, ждет, пока он полностью отобразится, а затем использует отражение для ссылки на ваш основной модуль «Реал». .

(Используйте рефлексию, потому что в противном случае она будет тянуть всю вашу программу через ссылки, прежде чем запустит основную - по крайней мере, так она работала).

Если вы говорите о быстродействии во время выполнения, вы не будете быстрее менять языки, а Java работает так быстро, как только можете. Вы МОЖЕТЕ быть в состоянии получить повышение, конвертировавшись в C / C ++ и переписав его для этих платформ (меньше ОО, распределение стека вместо кучи и т. Д.), Но в остальном ни один из других широко используемых языков не близок по скорости Java .

Если вам действительно нужен быстрый запуск, в зависимости от того, что вы делаете, могут быть некоторые хитрости. Я видел проекты, которые пытаются поддерживать виртуальную машину Java на панели инструментов и позволяют вам делать запросы (скажите, чтобы она запускала приложение). Это было быстрее, но предъявляло дополнительные требования пользователя (Загрузка этого дополнительного инструмента)

Еще одна возможность - если вы постоянно запускаете / закрываете небольшие задачи, и это является причиной того, что запуск беспокоит вас, тогда вы определенно можете ускорить его, оставив его работающим незаметно. Просто сделайте, чтобы ваше Java-приложение открывало сокет и слушало команды, затем создайте небольшой скрипт .EXE или shell, который может запустить вашу программу, если она не запущена, или отправить команды на этот сокет, если он есть. Это полностью исключит запуск после первого запуска.

1 голос
/ 20 октября 2010

В целом время запуска Java намного больше, чем у других языков. Если вы придерживаетесь Java в настольном приложении, многие вещи, такие как время запуска, определяются JRE, установленным на компьютере клиента, которым вы не можете управлять.

Что касается "бесконечных утечек памяти" ... Java не пропускает память. Если ваша программа это исправит.

0 голосов
/ 20 октября 2010

Это второй ответ, потому что он совершенно другой, а мой другой слишком длинный:)

Попробуйте скомпилировать - я думаю, что GCC может скомпилировать его. Это может почти полностью исключить ваш запуск. Я считаю, что Jikes раньше был IBM-компилятором Windows, но я не знаю, поддерживается ли он до сих пор.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...