MATLAB "out of memory" erreur
Quand je lance un exemple de script MATLAB, il est dit:
De mémoire. Type d'AIDE MÉMOIRE pour vos options.
Quand je tape "mémoire", il signale:
Maximum possible array: 156 MB (1.638e+008 bytes) *
Memory available for all arrays: 740 MB (7.756e+008 bytes) **
Memory used by MATLAB: 1054 MB (1.105e+009 bytes)
Physical Memory (RAM): 3070 MB (3.219e+009 bytes)
* Limited by contiguous virtual address space available.
** Limited by virtual address space available.
Est-il un moyen de contourner cette erreur? Je suis sous Windows XP x32 avec MATLAB 2009a.
source d'informationauteur Contango
Vous devez vous connecter pour publier un commentaire.
pack
une mémoire de défragmentation. Il pourrait vous aider un peu aussi loin que la mémoire contiguë disponible.Rappelez-vous, lorsque MATLAB dit que c'est de mémoire, cela signifie qu'il est sorti de la mémoire contiguë, de sorte que le redémarrage ou reprise d'MATLAB peut travailler.
Mais, je vous recommande de l'optimisation de votre code et de déterminer comment vous mangez beaucoup de mémoire. Il pourrait être un mauvais conçu boucle récursive, ou d'une mauvaise fonction d'indexation (en utilisant un double au lieu de partitions logiques contenues à l'index une énorme matrice).
J'ai pratiquement vécu avec des erreurs de mémoire pour un moment depuis que j'avais à faire avec d'énormes ensembles de données, mais il y a toujours une solution de contournement, de poser des questions précises et vous serez surpris.
Problème résolu.
Sous Windows XP x32, j'ai réussi à presque le double de la quantité de mémoire disponible pour MATLAB par l'édition de démarrage.ini pour ajouter le commutateur /3GB /USERVA=3030
Avec la réduction de notre tableau des tailles, cela a complètement résolu le problème 🙂
J'ai pu avoir aussi le problème a été résolu par la mise à niveau vers Windows x64 ou Windows 7 x64. Cette loi prévoit également de doubler la quantité de mémoire disponible pour MATLAB, même si vous restez avec MATLAB x32 et de ne pas mettre à niveau à MATLAB x64. X64 de Windows est beaucoup plus efficace en terme de mémoire, même avec les systèmes qui ont seulement 4 GO de RAM physique installée.
De quoi êtes-vous en essayant de répartir les, quand il est à court de mémoire (OOM)? Avez-vous de code à reproduire? Un large éventail de problèmes peuvent provoquer des erreurs de mémoire insuffisante.
À diagnostiquer, utiliser "dbstop si toutes les erreurs" pour définir un point d'arrêt sur les erreurs. La mémoire va déclencher cela, et vous pouvez utiliser dbup, dbdown, et whos() pour voir ce qui consomme de la mémoire. Souvent OOM est causé par une mauvaise taille de la matrice ou de calcul de l'indice, et pas seulement par les grandes structures de données. E. g. cela va déclencher un OOM dans quasiment tous les 32-bits MATLAB.
Essayer, cela fonctionne bien pour moi.
Assurez-vous décochez la case "Limiter la taille maximale de la matrice à un pourcentage de la RAM". Parce que vous souhaitez étendre la mémoire
donc, nous n'avons pas besoin de cette fonctionnalité.