76 lines
2.0 KiB
JavaScript
76 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
const electron = require('electron');
|
|
const webFrame = electron.webFrame;
|
|
const remoteSession = electron.remote.session;
|
|
const remoteApp = electron.remote.app;
|
|
const process = require('process');
|
|
const remoteProcess = electron.remote.require('process');
|
|
const { getElectronMajorVersion } = require('./_common');
|
|
|
|
const MEMORY_USAGE_GATHER_INTERVAL = 5000;
|
|
|
|
let totalMemoryUsageKB = 0;
|
|
|
|
setInterval(() => {
|
|
Promise.all([process.getProcessMemoryInfo(), remoteProcess.getProcessMemoryInfo()].map(x => x.catch(() => 0))).then(usages => {
|
|
totalMemoryUsageKB = usages.reduce((total, usage) => total + usage.private, 0);
|
|
});
|
|
}, MEMORY_USAGE_GATHER_INTERVAL);
|
|
|
|
// [adill] "warm" the cache, as the first call to query cpu % will always be zero
|
|
let _ = getCurrentCPUUsagePercent();
|
|
|
|
function flushDNSCache() {
|
|
if (!remoteSession) return;
|
|
const defaultSession = remoteSession.defaultSession;
|
|
if (!defaultSession || !defaultSession.clearHostResolverCache) return;
|
|
defaultSession.clearHostResolverCache();
|
|
}
|
|
|
|
function flushCookies(callback) {
|
|
try {
|
|
if (getElectronMajorVersion() >= 7) {
|
|
remoteSession.defaultSession.cookies.flushStore().then(() => callback());
|
|
} else {
|
|
remoteSession.defaultSession.cookies.flushStore(callback);
|
|
}
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
}
|
|
|
|
function flushStorageData(callback) {
|
|
try {
|
|
remoteSession.defaultSession.flushStorageData();
|
|
} catch (err) {
|
|
callback(err);
|
|
return;
|
|
}
|
|
callback();
|
|
}
|
|
|
|
function purgeMemory() {
|
|
webFrame.clearCache();
|
|
}
|
|
|
|
function getCurrentCPUUsagePercent() {
|
|
let totalProcessorUsagePercent = 0.0;
|
|
for (const processMetric of remoteApp.getAppMetrics()) {
|
|
totalProcessorUsagePercent += processMetric.cpu.percentCPUUsage;
|
|
}
|
|
return totalProcessorUsagePercent;
|
|
}
|
|
|
|
function getCurrentMemoryUsageKB() {
|
|
return totalMemoryUsageKB;
|
|
}
|
|
|
|
module.exports = {
|
|
flushDNSCache,
|
|
flushCookies,
|
|
flushStorageData,
|
|
purgeMemory,
|
|
getCurrentCPUUsagePercent,
|
|
getCurrentMemoryUsageKB
|
|
}; |