Javascript 为什么Electron会在每个窗口生成一个进程?
我正在使用多个窗口开发electron应用程序。假设我有一个主窗口和几个子窗口 如果我在主进程中打开google.com创建20个子窗口,它会产生大约23个电子进程(每个窗口一个+GPU进程+其他进程),在我的windows 10机器上总共消耗大约800 MB内存。这显然是很多Javascript 为什么Electron会在每个窗口生成一个进程?,javascript,typescript,electron,Javascript,Typescript,Electron,我正在使用多个窗口开发electron应用程序。假设我有一个主窗口和几个子窗口 如果我在主进程中打开google.com创建20个子窗口,它会产生大约23个电子进程(每个窗口一个+GPU进程+其他进程),在我的windows 10机器上总共消耗大约800 MB内存。这显然是很多 const {app, BrowserWindow} = require('electron') let mainWindow const webPreferences = { sandbox: true };
const {app, BrowserWindow} = require('electron')
let mainWindow
const webPreferences = {
sandbox: true
};
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences
})
mainWindow.loadFile('index.html')
for (var t = 0; t < 20; t++) {
const childWindow = new BrowserWindow({
webPreferences
})
childWindow.loadURL('https://google.com')
}
}
app.on('ready', createWindow)
和index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<script>
for (var t = 0; t < 20; t++) {
window.open('https://google.com');
}
</script>
</body>
</html>
你好,世界!
你好,世界!
对于(var t=0;t<20;t++){
打开窗户https://google.com');
}
如果我从主进程(第一个代码段)创建子窗口,是否有任何方法可以使所有子窗口都只有一个进程?如果有人能解释为什么它是这样工作的,那就太好了
另外,我正在使用electron fiddler和electron 6.0.2运行时来运行这些代码片段,
亲和性
选项起作用。具有相同关联性的窗口将在单个进程中聚集在一起
有关此功能的更多详细信息,请参见此处
这里呢
出于同样的原因,Chrome会为每个选项卡生成一个新流程;Electron只是铬渲染引擎的包装。你在这里遇到的是一些人批评像Electron这样的平台的主要原因——通过web渲染引擎运行“本机”应用程序的巨大开销。请仔细阅读这个问题。我知道这是一个包装。问题是,如果我在主进程中创建一个窗口,为什么它会生成很多进程,但同时在浏览器进程中,每个窗口只生成一个进程。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<script>
for (var t = 0; t < 20; t++) {
window.open('https://google.com');
}
</script>
</body>
</html>