set-memory
v1.0.8
Published
It uses NODE OPTIONS to set the memory when deploying any app /during building javascript and typescript projects so that it doesnt lead to out of heap memory allocation issues, especially on low memory machines.Use npm i -g set-memory Use set-memory <Num
Downloads
15
Maintainers
Readme
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
}