1.0.8 • Published 2 months ago

set-memory v1.0.8

Weekly downloads
-
License
ISC
Repository
-
Last release
2 months ago

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
}

Websites and repositories

Github Repository

1.0.8

2 months ago

1.0.7

2 months ago

1.0.6

2 months ago

1.0.5

2 months ago

1.0.4

2 months ago

1.0.3

2 months ago

1.0.2

2 months ago

1.0.1

2 months ago

1.0.0

2 months ago