# 第21章.进程对象
> process 对象的扩展
Electron 中的 `process` 对象使用了如下的 APIs 进行扩展:
## 事件
### Event: 'loaded'
当 Electrn 加载好它内部的初始化脚本,准备载入 web 页面或者 `main` 脚本的时候被发射。
它可以被 preload 脚本使用来在 node 集成被关闭时添加被移除的 Node 全局符号到全局作用域中:
```javascript
// preload.js
const _setImmediate = setImmediate
const _clearImmediate = clearImmediate
process.once('loaded', () => {
global.setImmediate = _setImmediate
global.clearImmediate = _clearImmediate
})
```
## 属性
### `process.noAsar`
设置为 `true` 可以禁用 Node 内建模块中对 `asar` 档案的支持。
### `process.type`
当前进程的类型,可能是 `"browser"` (即主进程) 或 `"renderer"`。
### `process.versions.electron`
Electron 的版本字符串。
### `process.versions.chrome`
Chrome 的版本字符串。
### `process.resourcesPath`
资源目录路径。
### `process.mas`
用于 Mac App Store 构建,这个属性为 `true`;对于其它构建,则是 `undefined`。
### `process.windowsStore`
如果应用运行为一个 Windows Store app (appx),这个属性为 `true`;否则为 `undefined`。
### `process.defaultApp`
如果应用通过被作为参数传递到默认 app 启动,这个属性在主进程中为 `true`,否则是 `undefined`。
## 方法
`process` 对象有以下方法:
### `process.crash()`
引发当前进程的主线程崩溃。
### `process.hang()`
引发当前进程的主线程挂起。
### `process.setFdLimit(maxDescriptors)` *macOS* *Linux*
* `maxDescriptors` Integer
设置文件描述符软限制为 `maxDescriptors` 或者操作系统硬限制,无论是否低于当前进程。
### `process.getProcessMemoryInfo()`
返回 `Object`:
* `workingSetSize` Integer —— 实际物理内存中当前被占用的内存数量
* `peakWorkingSetSize` Integer —— 实际物理内存中曾经被占用的最大的内存数量
to actual physical RAM.
* `privateBytes` Integer —— 没有跟其它进程共享的内存数量,比如 JS heap 或 HTML content.
* `sharedBytes` Integer —— 和其它进程共享的内存数量,典型的是被 Electron 代码自身消耗的内存。
返回一个对象,表示当前进程的内存使用状态。注意所有的状态都以千字节(KB)报告。
### `process.getSystemMemoryInfo()`
返回 `Object`:
* `total` Integer —— 系统中可用的物理内存总量,以 KB 表示
* `free` Integer —— 没有被应用或者硬盘缓存使用的内存总量
* `swapTotal` Integer —— 系统中可用的交换内存总量,KB表示。 *Windows* *Linux*
* `swapFree` Integer —— 系统中可用的交换内存总量,KB表示 *Windows* *Linux*
返回一个对象,表示整个系统的内存使用状态。注意,所有状态都以 KB 的形式报告。
- 索引
- 前言.关于Electron
- 第一部分 开发指南
- 第1章.平台支持
- 第2章.安全、原生功能和你的责任
- 第3章.版本说明
- 第4章.发行应用
- 第5章.Mac App商店提交指南
- 第6章.Windows商店指南
- 第7章.应用打包
- 第8章.使用Node原生模块
- 第9章.调试主进程
- 9.1.在VSCode中调试
- 9.2.在node-inspector中调试
- 第10章.使用Selenium和WebDriver
- 第11章.DevTools扩展
- 第12章.使用Pepper Flash插件
- 第13章.使用Widevine CDM插件
- 第14章.通过自动化持续集成系统进行测试
- 第15章.离屏渲染
- 第二部分 使用教程
- 第16章.快速入门
- 第17章.桌面环境集成
- 第18章.在线/离线事件探测
- 第19章.应答式编译器(REPL)
- 第三部分 API参考
- 第20章.API简介
- 第21章.进程对象
- 第22章.Chrome的命令行开关
- 第23章.环境变量
- 第24章.定制的DOM元素
- 24.1.File 对象
- 24.2.webview 标签
- 第25章.主进程模块
- 25.1.app
- 25.2.BrowserWindow
- 25.3.无框架窗口
- 第26章.渲染进程模块
- 第27章.两种进程可用的模块
- 第四部分 高级主题
- 附 FAQ
- 附 文档规范
- 附 示例用例
- 1.无边框窗口