프로세스
process 객체의 확장 기능
Electron의 process
객체는 Node.js process
객체를 확장한 것이다. 이 객체에는 다음과 같은 이벤트, 속성, 메서드가 추가된다:
샌드박스
샌드박스 환경에서 렌더링 프로세스는 제한된 process
객체를 사용한다. 이 객체는 전체 API 중 일부만 제공한다:
crash()
hang()
getCreationTime()
getHeapStatistics()
getBlinkMemoryInfo()
getProcessMemoryInfo()
getSystemMemoryInfo()
getSystemVersion()
getCPUUsage()
uptime()
argv
execPath
env
pid
arch
platform
sandboxed
contextIsolated
type
version
versions
mas
windowsStore
contextId
이벤트
이벤트: 'loaded'
Electron이 내부 초기화 스크립트를 로드하고 웹 페이지 또는 메인 스크립트를 로드하기 시작할 때 발생한다.
프로퍼티
process.defaultApp
Readonly
boolean
타입의 값이다. 앱이 기본 Electron 실행 파일에 인자로 전달되어 시작될 때, 이 프로퍼티는 메인 프로세스에서 true
가 된다. 그렇지 않은 경우에는 undefined
이다. 예를 들어 electron .
명령어로 앱을 실행하면, 이 프로퍼티는 true
가 된다. 이때 앱이 패키징되어 있는 경우(isPackaged
가 true
)에도 마찬가지이다. 이 프로퍼티는 process.argv
에서 몇 개의 인자를 제거해야 하는지 판단할 때 유용하게 사용할 수 있다.
process.isMainFrame
읽기 전용
boolean
타입의 값으로, 현재 렌더러 컨텍스트가 "메인" 렌더러 프레임일 때 true
가 된다. 현재 프레임의 ID가 필요하다면 webFrame.routingId
를 사용해야 한다.
process.mas
Readonly
boolean
타입의 값이다. Mac App Store 빌드에서 이 속성은 true
가 되며, 다른 빌드에서는 undefined
가 된다.
process.noAsar
애플리케이션 내부에서 ASAR 지원을 제어하는 boolean
값이다. 이 값을 true
로 설정하면 Node.js의 내장 모듈에서 asar
아카이브에 대한 지원이 비활성화된다.
process.noDeprecation
stderr
에 출력되는 사용 중단 경고(deprecation warning)를 제어하는 불리언 값이다. 이 값을 true
로 설정하면 사용 중단 경고가 표시되지 않는다. 이 속성은 --no-deprecation
커맨드라인 플래그 대신 사용할 수 있다.
process.resourcesPath
읽기 전용
리소스 디렉토리의 경로를 나타내는 string
타입의 값이다.
process.sandboxed
읽기 전용
boolean
타입의 값이다. 렌더러 프로세스가 샌드박스 환경에서 실행 중일 때 이 속성은 true
를 반환한다. 그렇지 않은 경우 undefined
를 반환한다.
process.contextIsolated
읽기 전용
이 속성은 현재 렌더러 컨텍스트에서 contextIsolation
이 활성화되어 있는지 여부를 나타내는 boolean
값이다. 메인 프로세스에서는 이 값이 undefined
로 설정된다.
process.throwDeprecation
이 boolean
값은 더 이상 사용되지 않는 기능(deprecation)에 대한 경고를 예외로 처리할지 여부를 제어한다. 이 값을 true
로 설정하면 더 이상 사용되지 않는 기능에 대해 에러가 발생한다. 이 속성은 --throw-deprecation
커맨드라인 플래그 대신 사용된다.
process.traceDeprecation
process.traceDeprecation
는 stderr
에 출력되는 폐기 예정(deprecation) 경고에 스택 트레이스(stack trace)를 포함할지 여부를 제어하는 불리언 값이다. 이 값을 true
로 설정하면 폐기 예정 경고와 함께 스택 트레이스가 출력된다. 이 속성은 --trace-deprecation
커맨드라인 플래그를 대체한다.
process.traceProcessWarnings
process.traceProcessWarnings
는 stderr
에 출력되는 프로세스 경고에 스택 트레이스를 포함할지 여부를 제어하는 불리언 값이다. 이 값을 true
로 설정하면 프로세스 경고(사용 중단 경고 포함)에 대한 스택 트레이스가 출력된다. 이 속성은 --trace-warnings
커맨드라인 플래그를 대체한다.
process.type
읽기 전용
현재 프로세스의 타입을 나타내는 string
이다. 가능한 값은 다음과 같다:
browser
- 메인 프로세스renderer
- 렌더러 프로세스worker
- 웹 워커 내부utility
- 서비스로 실행된 노드 프로세스
process.versions.chrome
읽기 전용
Chrome의 버전 문자열을 나타내는 string
타입의 값이다.
process.versions.electron
읽기 전용
Electron의 버전 문자열을 나타내는 string
타입의 값이다.
process.windowsStore
Readonly
boolean
타입의 값이다. 앱이 Windows Store 앱(appx)으로 실행 중일 경우 이 속성은 true
가 된다. 그렇지 않으면 undefined
로 설정된다.
process.contextId
읽기 전용
process.contextId
는 현재 자바스크립트 컨텍스트의 전역 고유 ID를 나타내는 string
타입의 선택적 값이다.
각 프레임은 고유한 자바스텍스트 컨텍스트를 갖는다. contextIsolation
이 활성화된 경우, 격리된 세계(Isolated World)도 별도의 자바스크립트 컨텍스트를 가진다.
이 프로퍼티는 렌더러 프로세스에서만 사용할 수 있다.
process.parentPort
이 속성은 현재 프로세스가 UtilityProcess
인 경우, 부모 프로세스와 통신할 수 있는 Electron.ParentPort
객체를 반환한다. 만약 현재 프로세스가 UtilityProcess
가 아니라면 null
을 반환한다.
메서드
process
객체는 다음과 같은 메서드를 제공한다:
process.crash()
현재 프로세스의 메인 스레드를 강제로 중단시킨다.
process.getCreationTime()
number | null
타입의 값을 반환한다. 이 값은 epoch 이후의 밀리초 단위 시간을 나타내며, 정보를 가져올 수 없는 경우 null
을 반환한다.
이 메서드는 애플리케이션의 생성 시간을 나타낸다. 시간은 epoch 이후의 밀리초 단위로 표현된다. 프로세스 생성 시간을 가져올 수 없는 경우 null
을 반환한다.
process.getCPUUsage()
CPUUsage를 반환한다.
process.getHeapStatistics()
Object
를 반환한다:
totalHeapSize
Integer - 전체 힙 크기totalHeapSizeExecutable
Integer - 실행 가능한 힙 크기totalPhysicalSize
Integer - 실제 물리적 메모리 크기totalAvailableSize
Integer - 사용 가능한 메모리 크기usedHeapSize
Integer - 사용 중인 힙 크기heapSizeLimit
Integer - 힙 크기 제한mallocedMemory
Integer - malloc으로 할당된 메모리 크기peakMallocedMemory
Integer - malloc으로 할당된 메모리의 최대 크기doesZapGarbage
boolean - 가비지 컬렉션 시 메모리를 초기화하는지 여부
V8 힙 통계를 담은 객체를 반환한다. 모든 통계는 킬로바이트(KB) 단위로 보고된다.
process.getBlinkMemoryInfo()
Object
를 반환한다:
allocated
Integer - 모든 할당된 객체의 크기를 킬로바이트 단위로 나타낸다.total
Integer - 전체 할당된 공간의 크기를 킬로바이트 단위로 나타낸다.
Blink 메모리 정보를 담은 객체를 반환한다. 렌더링이나 DOM과 관련된 메모리 이슈를 디버깅할 때 유용하다. 모든 값은 킬로바이트 단위로 보고된다는 점에 유의한다.
process.getProcessMemoryInfo()
Promise<ProcessMemoryInfo>
를 반환한다. 이 Promise는 ProcessMemoryInfo로 resolve된다.
이 메서드는 현재 프로세스의 메모리 사용 통계를 담은 객체를 반환한다. 모든 통계는 킬로바이트(KB) 단위로 보고된다. 이 API는 앱이 준비된 후에 호출해야 한다.
Chromium은 macOS에서 residentSet
값을 제공하지 않는다. 이는 macOS가 최근에 사용되지 않은 페이지를 메모리에서 압축하기 때문이다. 따라서 resident set size 값은 예상과 다를 수 있다. macOS에서는 private
메모리가 프로세스의 실제 압축 전 메모리 사용량을 더 잘 나타낸다.
process.getSystemMemoryInfo()
Object
를 반환한다:
total
Integer - 시스템에서 사용 가능한 물리적 메모리의 총량을 킬로바이트(KB) 단위로 나타낸다.free
Integer - 애플리케이션이나 디스크 캐시에서 사용하지 않는 메모리의 총량을 킬로바이트(KB) 단위로 나타낸다.swapTotal
Integer Windows Linux - 시스템에서 사용 가능한 스왑 메모리의 총량을 킬로바이트(KB) 단위로 나타낸다.swapFree
Integer Windows Linux - 시스템에서 사용 가능한 스왑 메모리의 여유량을 킬로바이트(KB) 단위로 나타낸다.
이 메서드는 시스템 전체의 메모리 사용 통계를 제공하는 객체를 반환한다. 모든 통계는 킬로바이트(KB) 단위로 보고된다.
process.getSystemVersion()
string
타입의 값을 반환한다. 이 값은 호스트 운영체제의 버전을 나타낸다.
예제:
const version = process.getSystemVersion()
console.log(version)
// macOS에서 -> '10.13.6'
// Windows에서 -> '10.0.17763'
// Linux에서 -> '4.15.0-45-generic'
참고: 이 메서드는 os.release()
와 달리 macOS에서 커널 버전이 아닌 실제 운영체제 버전을 반환한다.
process.takeHeapSnapshot(filePath)
filePath
string - 출력 파일 경로
boolean
반환 - 스냅샷 생성 성공 여부를 나타낸다.
V8 힙 스냅샷을 생성하고 filePath
에 저장한다.
process.hang()
현재 프로세스의 메인 스레드를 멈추게 한다.
process.setFdLimit(maxDescriptors)
macOS Linux
maxDescriptors
Integer
현재 프로세스에 대해 파일 디스크립터의 소프트 제한을 maxDescriptors
또는 운영체제의 하드 제한 중 더 낮은 값으로 설정한다.