NEWS
Regex Memory Bedarf
-
Ich versucht ein bißchen mit Regex zu arbeiten.
Leider bemerke ich, dass dabei nach ein paar Versuchen ioBroker wegen zu wenig Memory abstürzt.
Ich habe - ohne Regex - 350 MB available Memory. Sollte eigentlich gut ausreichen.
Ist da war bekannt, dass Regex nicht richtig funktioniert?
-
Der Code scheint ohne Probleme zu laufen.
var memstring = "{"; var memobj; exec('cat /proc/meminfo', function (error, stdout, stderr) { var memsizeRe = /[0-9]* (?=kB)/; var memnameRe = /[A-z]*(?=:)/; var delimiter = "" stdout.split(/\r?\n/).forEach(line => { var memname = memnameRe.exec(line); var memsize = memsizeRe.exec(line); if ((memname !== "") && (memname !== null)) { memstring = memstring + delimiter +'"' + memname + '":' + memsize; delimiter = ","; } }); memstring = memstring + '}'; //log(memstring); memobj = JSON.parse(memstring); log(memobj.MemAvailable); log(memobj.MemFree); log(memobj.Active); });Ich habe den noch ein bisschen umgeschrieben und dann hatte ich Probleme.
`var memsizeRe = /[\d]*(?= kB)/mg; var memnameRe = /[\w]*(?=:)/mg; exec('cat /proc/meminfo', function (error, stdout, stderr) { var parsestring = stdout; var mems = parsestring.match(memsizeRe); var memnames = parsestring.match(memnameRe); log(mems.length); for (i=1;mems.length;i++) { log(mems[i]); log(memnames[i]); } });` [/i][/i] -
Eins ist mir gerade aufgefallen, dass das Abbruchkriterium für die Schleife nicht ok ist.
for (i=1;mems.length;i++) sollte wohl besser for (i=1;i <mems.length;i++) heißen.<br="">–- aber das der Raspi dann sofort abstürzt, hätte ich nicht gedacht.</mems.length;i++)>