為什么會(huì)在機(jī)器上出現(xiàn)不只一個(gè)守護(hù)進(jìn)程

2018-07-01 16:35 更新

有幾個(gè)原因Gradle會(huì)創(chuàng)建一個(gè)新的守護(hù)進(jìn)程代替使用一個(gè)已存在的守護(hù)進(jìn)程.如果守護(hù)進(jìn)程沒(méi)有閑置,兼容,則會(huì)啟動(dòng)一個(gè)新的守護(hù)進(jìn)程.

空閑的守護(hù)進(jìn)程是當(dāng)前未執(zhí)行構(gòu)建或做其他有用的工作.

兼容的守護(hù)進(jìn)程是一個(gè)可以(或者可以達(dá)到)滿足要求的編譯環(huán)境的要求。Java安裝程序運(yùn)行的構(gòu)建是構(gòu)建環(huán)境方面的一個(gè)例子。構(gòu)建運(yùn)行時(shí)所需的JVM系統(tǒng)屬性是另一個(gè)例子。

一個(gè)已經(jīng)運(yùn)行的Java進(jìn)程可能不能滿足所需的構(gòu)建環(huán)境的某些方面。如果守護(hù)進(jìn)程由Java7啟動(dòng),但要求的環(huán)境要求為Java8,則守護(hù)進(jìn)程是不兼容的,必須另外啟動(dòng)。再者,在運(yùn)行的JVM不能改變一個(gè)運(yùn)行時(shí)的某些性能。如內(nèi)存分配(如-Xmx1024m),默認(rèn)文本編碼運(yùn)行的JVM中,默認(rèn)的語(yǔ)言環(huán)境,等等一個(gè)JVM不能改變的運(yùn)行環(huán)境。

"Required build environment"通常在構(gòu)建客戶端(如Gradle命令行,IDE等)方面隱含構(gòu)建環(huán)境,并明確通過(guò)命令行選項(xiàng)設(shè)置.參見(jiàn)Chapter 20,The Build Environment有關(guān)如何指定和控制構(gòu)建環(huán)境的詳細(xì)信息.

一下JVM系統(tǒng)屬性是有效不變的.如果需求編譯環(huán)境需要這些屬性,不同的守護(hù)進(jìn)程JVM在下列屬性中有不同的值時(shí),守護(hù)進(jìn)程不兼容.

  • file.encoding
  • user.language
  • user.country
  • user.variant
  • com.sun.management.jmxremote

下列JVM屬性,通過(guò)啟動(dòng)參數(shù)控制,也是有效不變的.在需求構(gòu)建環(huán)境和守護(hù)進(jìn)程環(huán)境的對(duì)應(yīng)屬性必須按順序完全匹配,才可兼容.

  • 最大堆大小(即 -Xmx JVM參數(shù))
  • 最小堆大小(即 -Xms JVM參數(shù))
  • 引導(dǎo)類路徑(即 -Xbootclasspath JVM參數(shù))
  • "assertion"狀態(tài)(即 -ea 參數(shù))

所需的Gradle版本是需求構(gòu)建環(huán)境的另一個(gè)方面.守護(hù)進(jìn)程被耦合到特定Gradle運(yùn)行時(shí),多個(gè)正在運(yùn)行的守護(hù)進(jìn)程產(chǎn)生的原因是使用使用不同版本的Gradle會(huì)在會(huì)話過(guò)程中處理多個(gè)項(xiàng)目.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)