Un problème courant lors du travail sur un projet JavaScript Node.js est l'erreur « JavaScript heap out of memory ». Cette erreur se produit généralement lorsque la mémoire par défaut allouée par votre système à Node.js n'est pas suffisante pour exécuter un grand projet.
L'erreur est courante, que vous exécutiez votre projet sous Windows, macOS ou une distribution Linux comme Ubuntu. Heureusement, il existe quelques correctifs simples qui peuvent aider à résoudre l'erreur « JavaScript heap out of memory ».
Qu'est-ce que la mémoire de tas ?
Avant de chercher à corriger l'erreur, il est utile de comprendre ce qu'est la mémoire de tas et comment les programmes l'utilisent.
La mémoire allouée sur le tas système est également appelée mémoire allouée dynamiquement. C'est au programmeur d'utiliser la mémoire disponible comme bon lui semble. Plus important encore, la taille du tas d'un programme dépend de la mémoire virtuelle disponible qui lui est allouée.
Si vous exécutez un projet relativement important, il peut nécessiter plus de mémoire que le bloc alloué par défaut. Cela peut entraîner le blocage de votre projet et enregistrer l'erreur "Tas de mémoire JavaScript insuffisant".
Comment réparer JavaScript Heap Out of Memory sous Windows
Quel que soit votre IDE, le correctif « Tas de mémoire JavaScript insuffisant » est identique.
Tu peux ajouter une variable d'environnement via le panneau de configuration pour augmenter la mémoire allouée à un projet Node.js.
- Ouvrez le Le menu Démarrer, rechercher Réglages avancés du système, et sélectionnez la meilleure correspondance.
- Dans la boîte de dialogue, cliquez sur Variables d'environnement, puis cliquez sur Nouveau de l'un ou l'autre Variables système ou Variables utilisateur. Le premier s'applique à tous les utilisateurs de votre ordinateur, tandis que le second n'affecte que votre compte actuel.
- Dans le Nom de variable entrer dans le champ NODE_OPTIONS. Dans le Valeur variable entrer dans le champ --max-old-space-size=4096. Cette valeur allouera 4 Go de mémoire virtuelle à Node.js. Pour définir une valeur différente, multipliez la quantité dont vous avez besoin en Go par 1024 (la valeur de la variable doit être en Mo).
- Cliquer sur D'ACCORD pour enregistrer vos modifications, puis cliquez sur Appliquer et enfin cliquer D'ACCORD une fois de plus. Redémarrez votre projet pour que les modifications prennent effet.
Vous pouvez également définir une variable d'environnement via un terminal Windows PowerShell.
Lancez un terminal PowerShell, tapez la commande ci-dessous et appuyez sur Entrée :
$env: NODE_OPTIONS="--max-old-space-size=4096"
Si vous souhaitez uniquement augmenter temporairement le segment de mémoire, exécutez la commande ci-dessous dans un terminal PowerShell avant d'exécuter votre projet :
Positionner NODE_OPTIONS=--max-old-space-size=4096
Une fois que vous avez entré cette commande, vous pouvez déployer/exécuter votre projet en utilisant npm run dev ou votre propre script.
N'oubliez pas de toujours saisir la taille de mémoire requise en Mo. Ne pas le faire peut provoquer un comportement inattendu dans votre programme. Il est également essentiel de ne pas allouer toute votre mémoire disponible car cela peut entraîner une défaillance importante du système.
Comment réparer l'erreur JavaScript Heap Out of Memory sur macOS et Linux
Sur macOS et Linux, le correctif de mémoire de tas est très similaire. Tu devrais exporter une variable d'environnement qui spécifie la quantité de mémoire virtuelle allouée à Node.js.
Dans votre terminal, avant d'exécuter votre projet, saisissez la commande suivante et appuyez sur Entrée :
exporter NODE_OPTIONS=--max-old-space-size=4096
Cela allouera 4 Go de mémoire virtuelle à l'espace d'exécution de Node.js. Pour définir une quantité de mémoire différente, remplacez 4096 avec la quantité requise en Mo.
Vous pouvez ajouter la commande ci-dessus à votre fichier de configuration pour éviter de répéter le processus. Pour ce faire, suivez la même processus de définition de votre variable PATH.
Éviter l'erreur JavaScript Heap Out of Memory
Vous pouvez éviter cette erreur en vous assurant que votre programme est exempt de fuites de mémoire. Une bonne gestion de la mémoire est cruciale lors de l'écriture de vos programmes, en particulier dans un langage de bas niveau.
Bien que l'augmentation de la mémoire allouée résolve temporairement le problème, vous devez trouver la cause première et la résoudre.