Существует ли демон JVM?

Можно изменить гамма настройки (цвета и эффективно контрастировать также), использование xrandr инструмент. Сначала определите выходное название своего монитора:

 $ xrandr -q | grep connected
 DFP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
 CRT1 disconnected (normal left inverted right x axis y axis)

В вышеупомянутом примере мне подключили монитор и рассматриваемый как вывод DFP1. Таким образом, теперь для гамма примера модификации:

$ xrandr --output DFP1 --gamma 0.8:0.8:1.1

Где гамма значения находятся в формате Red:Green:Blue.

Править: Другая опция xcalib (Вы, возможно, должны установить его сначала). Это может использоваться с -a параметр, чтобы иметь эффект непосредственно на подключенный монитор. Посмотрите вывод xcalib для получения дополнительной информации. К сожалению, цвет/подборы яркости, кажется, работают аддитивным образом, таким образом, Вы, возможно, должны были бы сделать randr --output ... --gamma 1:1:1 восстановить состояние по умолчанию.

6
05.03.2012, 23:55
4 ответа

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

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

Но кажется, что Вашим основным вопросом является ре выполнения запуска JAVA-приложения наверху запуска jvm. Это также было моим вопросом. Я нашел это:

Если желающий для принесения в жертву безопасности пользовательского разделения проверьте Nailgun, Безумно Быстрый Java:

Nailgun является клиентом, протоколом и сервером для того, чтобы запустить программы Java из командной строки, не подвергаясь запуску JVM наверху. Программы, запущенные в сервере (который реализован в Java), и, инициированы клиентом (записанный в C), который обрабатывает весь ввод-вывод.

7
27.01.2020, 20:22

Android использует единственный процесс Зиготы что ветвления для запущения нового приложения. Эта оптимизация возможна, потому что все приложения Android запускаются в той же среде; существует очень мало, чтобы сделать (главным образом устанавливает пользователя и загружают код приложения) запускать приложение. Эта оптимизация является эффективной, потому что существует мало, чтобы сделать, тем более, что процессу Зиготы уже связали библиотеки в.

В системе Unix не встречены предположения, которые лежат в основе Зиготы. Каждый процесс запускается со своих собственных переменных среды, своих собственных открытых файлов, своих собственных пределов использования, своего собственного пользователя и групп, и т.д. Вы не можете передать все это имущество от одного процесса до другого (можно передать некоторых, но даже затем это означало бы дополнительное время запуска). Кроме того, существует широкий спектр различных библиотек, пользовавшихся различными приложениями; каждое приложение должно было бы загрузить свое собственное. Подобная Зиготе оптимизация не возможна в целом и не, во многих случаях, действительно полезна, даже когда это возможно.

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

6
27.01.2020, 20:22
  • 1
    Хороший ответ. Я хотел бы указать, что Java не имеет механизма ветвления/должностного лица Unix, но только исполнителя команды (который не является реальным, быстрым ветвлением), или своя собственная модель потоков, которая очень быстра и используется серверами приложений. Обработка изоляции сделана через OSGI и/или classloaders, но это не то же как два различных процесса, где один из процессов может отказать, и другой выживает без помехи. OTOH, это не общая вещь в Java, где эти проблемы проявляются в форме исключений. –  vasquez 06.03.2012, 09:14
  • 2
    я должен (частично) не согласиться с Вами: Я думаю, что процесс JVM, работающий как нерестящийся процесс за Java (или другая совместимая JVM), приложения могут иметь много полезных предположений, как этот, процесс будет использовать большую системную библиотеку среды выполнения Java (rt.jar, самостоятельно 40 МБ). Предварительно загружение этого и совместное использование его как динамическая библиотека были бы огромной оптимизацией в течение времени запуска процесса Java. При использовании Groovy или JRuby для выполнения короткого сценария неоднократно, почти все время выполнения будет для запуска JVM. –  zacsek 06.03.2012, 12:48
  • 3
    @zacsek “может иметь много полезных предположений”: Вы имели в виду много полезных приложений? Да, существуют некоторые полезные приложения, но Вы не можете реализовать его полностью универсальным способом. Могут быть библиотеки Java, чтобы помочь Вам подать разветвляющуюся заявку; для этого необходимо спросить относительно Переполнения стека. –  Gilles 'SO- stop being evil' 06.03.2012, 13:01

Любой процесс, включая программу Java, может работать как демон. Реальный вопрос состоит в том, если реализация Java имеет все системные вызовы для превращения его в "надлежащий процесс демона" (например, обработка сигналов, обработка группы сессии/процесса, и т.д.). Вы могли бы хотеть посмотреть на Демона Java API.

Кроме того, так как разветвление ОС будет, создавая копию под управлением программы, не будет никаких затрат на запуск, только стоимости создания нового процесса структуры данных в ОС. Выполнение последующего exec может понести расходы запуска. Поточная обработка часто используется вместо разветвления для программ Java, так как уже существует стабильный API.

1
27.01.2020, 20:22
  • 1
    То, что я имел в виду, было, если сам процесс JVM daemonizable, заставляя это вести себя по существу как процесс init: JVM всегда работает, все ее существенные классы загружаются, кэшируются в памяти, поэтому когда я выполню Java - банка Something.jar, это разветвит себя, загружая только классы пользовательского приложения, в то время как демон JVM становится родительским процессом. –  zacsek 06.03.2012, 00:01
  • 2
    , Это возможно, но снова, необходимо смотреть на то, что предлагает API. Путь, который fork работы являются и родительским процессом и дочерним процессом, сразу запускаются после fork возвраты, единственная отличающаяся вещь (помимо pid/ppid и памяти) являются возвращаемым значением: 0 для ребенка и для родителя, pid ребенка JVM может вступить во владение для загрузки классов по мере необходимости. Это по существу, что Tomcat и другие контейнеры приложения делают (хотя через потоки). Это не различающее поведение демона, но нерестящегося процесса. Демон отсоединяется от любого терминального или вмешательства пользователя. –  Arcege 06.03.2012, 01:19
  • 3
    @zacsek я думаю, был идеями сделать это как этот, но они никогда не брали по различным причинам. Я помню, что Sun имел идеи для "компьютера Java", который выполнит байт-код точно так же, как нормальные программы, но JVM не была настолько гибка. Они действительно оптимизировали много с временами запуска для jvm, как quickstarter и совместное использование данных класса, видят en.wikipedia.org/wiki/Java_performance –  vasquez 06.03.2012, 09:20

На самом деле серверы приложений как JBoss обеспечивают функциональность, подобную (но не то же как), что Вы просите: процесс Java работает в фоновом режиме, и можно дать этому команду запускать подприложение. Оборотная сторона этого подхода, однако, то, что подприложения не запускаются как отдельные процессы, таким образом, они безопасно не разделяются: если Вы разрушаете VM, или называете System.exit () или решаете прервать () все Потоки, все другие подприложения также затронуты.

1
27.01.2020, 20:22

Теги

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