1.0.8 • Published 2 months ago
set-memory v1.0.8
This package is designed to set the NODE_OPTIONS for memory limit configuration on Linux/Unix based systems, aiding deployment on low memory machines and preventing heap overflow issues in JavaScript and TypeScript programs.Stay Updated for future versions
Installation
To install the package globally, execute the following command:
npm i -g set-memory
Running the commands
For a specific limit/custom limit
set-memory <Number>
For auto memory allocation as per guidelines with some space for swapping
set-memory-auto
Working
For the automatic memory allocation(set-memory-auto)
const freeMemory = os.freemem() / (1024 * 1024);
memoryLimit = Math.floor((freeMemory - 500>=0?freeMemory - 500:freeMemory));
// Append the NODE_OPTIONS setting to the shell configuration file
const shellConfigFile = process.env.SHELL.includes('zsh') ? '.zshrc' : '.bashrc';
fs.appendFileSync(`${process.env.HOME}/${shellConfigFile}`, `export NODE_OPTIONS=--max_old_space_size=${memoryLimit}\n`);
//appended to shell configuration
For the manual memory allocation (set-memory)
const memoryOptions = {
'1': 1024,
'2': 2048,
'4': 4096,
'8': 8192,
'16': 16384,
'32': 32768,
'64': 65536
};
const inputMemory = process.argv[2];
let memoryLimit;
let totalMemory = os.totalmem() / (1024 * 1024);
if (inputMemory && memoryOptions[inputMemory]) {
memoryLimit = memoryOptions[inputMemory];
} else if (inputMemory && !isNaN(inputMemory)) {
memoryLimit = Number(inputMemory)*1024;
}
// Check if memory limit is greater than total memory
if (memoryLimit > totalMemory) {
console.log('Memory limit is greater than total system memory. Setting memory limit to calculated limit.');
const freeMemory = os.freemem() / (1024 * 1024);
memoryLimit = Math.floor((freeMemory - 500>=0?freeMemory-500:freeMemory));
//left some memory for swapping space as per node docs
}