查找Ruby Arrays的内存分配

Sah*_*hil 2 ruby memory-size

我想找出数据类型消耗的内存(以字节为单位).我size在一个整数上调用了方法.因为我正在运行64位机器,所以它返回8.

1.size # => 8
Run Code Online (Sandbox Code Playgroud)

类似地,对于字符串和数组,它返回每个字符/整数1个字节.

'a'.size # => 1
['a'].size # => 1
['a', 1].size # => 2
Run Code Online (Sandbox Code Playgroud)
  1. 为什么浮动没有尺寸方法?
  2. 不应该像['a', 1]return 那样异构数组1 + 8 = 9 bytes(1表示char,8表示整数)?
  3. 调用size检查分配给ruby数据类型的内存是否正确?

Gag*_*ami 8

我认为您正在寻找MRI内存使用情况.Ruby有ObjectSpace:objspace库扩展了ObjectSpace模块并添加了几个方法来获取有关对象/内存管理的内部统计信息.

您需要'objspace'才能使用此扩展模块.

这是你将得到的:

 > require 'objspace'
 => true 
 > ObjectSpace.memsize_of(Array)
 => 5096 
 > ObjectSpace.memsize_of(Hash)
 => 3304 
 > ObjectSpace.memsize_of(String)
 => 6344 
 > ObjectSpace.memsize_of(Integer)
 => 1768 
Run Code Online (Sandbox Code Playgroud)

注意: 通常,如果您不了解MRI实施,则不应使用此库.主要是,该库适用于需要了解MRI内存使用情况的(内存)分析器开发人员和MRI开发人员.