Arcane dispose d'un mécanisme permettant de détecter certains problèmes mémoires, en particulier :
De plus, cela permet d'obtenir des statistiques sur l'utilisation mémoire.
Pour l'activer, il suffit de positionner la variable d'environnement ARCANE_CHECK_MEMORY à true
. Toutes les allocations et désallocations sont tracées. Cependant, pour des problèmes de performance, on ne conserve et n'affiche la pile d'appel que pour les allocations supérieures à une certaine taille. Par défaut, la valeur est de 1Mo (1000000). Il est possible de spécifier une autre valeur via la variable d'environnement ARCANE_CHECK_MEMORY_BLOCK_SIZE. La variable d'environnement ARCANE_CHECK_MEMORY_BLOCK_SIZE_ITERATION permet de spécifier une valeur de bloc qui sera utilisé pour la boucle en temps après l'initialisation. Cela permet de tracer plus finement les allocations durant le calcul que celles qui ont lieu lors de l'initialisation.
Les appels sont tracés depuis l'appel à ArcaneMain::arcaneInitialize() jusqu'à l'appel à ArcaneMain::arcaneFinalize(). Lors de ce dernier appel, une liste des blocs alloués qui n'ont pas été désalloués est affiché.
Il est possible de gérer plus finement le vérificateur mémoire via l'interface IMemoryInfo. Cette interface est un singleton accessible via la méthode arcaneGlobalMemoryInfo();