読者です 読者をやめる 読者になる 読者になる

Node.jsのヒープサイズ表示が修正されていた

以前、–max_old_space_sizeに大きな値を指定するとヒープサイズの表示がおかしいなー、もしかして4GB以上は指定できないのかなー、どうせそんな値指定しないからいっかー、とか思っていたのだが、表示のバグで6.10.1で修正されていた。

$ nvm use v6.10.0
Now using node v6.10.0 (npm v3.10.10)
$ node --max_old_space_size=4096
> require('v8').getHeapStatistics()
{ total_heap_size: 7376896,
  total_heap_size_executable: 5242880,
  total_physical_size: 7376896,
  total_available_size: 22011840,
  used_heap_size: 3941224,
  heap_size_limit: 33554432 }

total_available_sizeが22MB、heap_size_limitが33MBしかないのだが、32bit intのオーバーフローで表示がバグっていたらしい。

$ nvm use v6.10.3
Now using node v6.10.3 (npm v3.10.10)
$ node --max_old_space_size=4096
> require('v8').getHeapStatistics()
{ total_heap_size: 8425472,
  total_heap_size_executable: 5242880,
  total_physical_size: 8425472,
  total_available_size: 4316613496,
  used_heap_size: 3877496,
  heap_size_limit: 4328521728 }

今度は4GB以上の値になりました。

Node v6.10.1 (LTS) | Node.js