我正在尝试调试Rails应用程序中的内存泄漏,并试图通过使用拨款获得现有对象的转储。
为了更好地理解输出,我认为我应该完全理解输出JSON行的含义:
{
"address":"0x7fb716009c20",
"type":"STRING",
"class":"0x7fb7360d40e0",
"embedded":true,
"bytesize":1,
"value":"f",
"encoding":"UTF-8",
"file":"/Users/songyy/.rvm/gems/ruby-2.3.1/gems/activerecord-4.2.7.1/lib/active_record/connection_adapters/abstract/quoting.rb",
"line":78,
"method":"unquoted_false",
"generation":93,
"memsize":40,
"flags":{
"wb_protected":true,
"old":true,
"uncollectible":true,
"marked":true
}
}是否有任何引用,解释了这个JSON对象中项目的确切含义?
我特别感兴趣的是:
发布于 2017-11-23 23:56:29
类:基本上是obj.class.object_id
embedded:如果字符串/数组适合于RVALUE (x64上的40字节),则为true
bytesize:奇怪的是它是1,它将是RVALUE之上所需的所有额外字节。
生成:对象被分配到的GC“生成”。数字越小,物体就越老。
wb_protected:写屏障受保护,意味着对象在年轻的堆中不能移动到老一代堆中。
标记: GC标记对象
建议您阅读源代码,以扩展其中的任何一个。那里的文件很少。
https://stackoverflow.com/questions/42280384
复制相似问题