Ich schreibe ein Matlab-Programm, das etwa 500 Dateien liest. Jede Datei hat 20.000 Zeilen mit jeweils einer Nummer in jeder Zeile. Das Programm versucht mit diesen Zahlen eine Matrix von 20.000 * 500 aufzubauen. Die Nummern werden als Double gespeichert, also 8 Bytes pro Nummer. Also würde ich erwarten, dass dies 20.000 * 500 * 8 Bytes benötigt, was ungefähr 1E8 ist, d. H. 100 MB. Und dennoch erschöpft dieses Programm meinen 16GB Speicher. Während das Programm läuft, sehe ich, dass die Speicherbelegung stetig zunimmt, GB von GB. Ich benutze Matlab R2015b auf Ubuntu 14.04.Warum benutzt mein Matlab-Programm so viel Speicher?
Was passiert? Vielen Dank für Ihre Aufmerksamkeit.
Hier ist der vollständige Code
clear all;
% number of rna bits in the file
filesize = 20532
maxFiles = 480;
rnaCounts = NaN(filesize,maxFiles);
myFolder = '~/_STATS/data3/RNASeqV2/UNC__IlluminaHiSeq_RNASeqV2/Level_3';
filePattern = fullfile(myFolder, '*genes.normalized_results');
theFiles = dir(filePattern);
rnaCounts = NaN(filesize,length(theFiles));
for k = 1 : length(theFiles)
mrnaFilename = strtrim(theFiles(k).name);
fprintf(1, 'Now reading mrnaFile %d %s \n', k, mrnaFilename);
% read rna file
fullFileName = fullfile(myFolder, mrnaFilename);
rnafid = fopen(fullFileName);
if rnafid < 0
fprintf('====ERROR OPENING RNA FILE =====================');
end
rnaline = fgets(rnafid);
lc = 1; % line counter
while ischar(rnaline) && feof(rnafid) ~= 1
rnaline = fgets(rnafid);
rnaSplit = strsplit(rnaline);
% write to the matrix
rnaCounts(lc,k) = str2num(rnaSplit{2});
lc = lc + 1;
end
fclose(rnafid);
end
Eine Sache zu versuchen ist, löschen Sie die erste Instanz von 'rnaCounts'; es ist unbenutzt und sehr groß, obwohl das nicht das sein sollte, was die Erinnerung aufbläht. – drhagen
Versuchen Sie auch 'str2double' anstatt' str2num'. Das ist nicht genau das war 'str2num'. 'help str2num' und' help str2double' – drhagen
Sind Sie sicher, dass der Speicher von Matlab und nicht nur vom Dateisystem-Cache gehalten wird? z.B. Wenn Sie Matlab töten, wird sofort der gesamte Speicher gelöscht? – drhagen