Ruby on rails 内存泄漏-ActiveSupport-依赖项
我最近发现我的应用程序内存泄漏 获取正常堆转储并进行分析显示:Ruby on rails 内存泄漏-ActiveSupport-依赖项,ruby-on-rails,memory-leaks,ruby-on-rails-5,Ruby On Rails,Memory Leaks,Ruby On Rails 5,我最近发现我的应用程序内存泄漏 获取正常堆转储并进行分析显示: object count (670282) ============================== 95930 activesupport-5.0.2/lib/active_support/dependencies.rb:293 92143 activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/database_statements.
object count (670282)
==============================
95930 activesupport-5.0.2/lib/active_support/dependencies.rb:293
92143 activerecord-5.0.2/lib/active_record/connection_adapters/postgresql/database_statements.rb:111
49151 activesupport-5.0.2/lib/active_support/core_ext/marshal.rb:4
13439 activerecord-5.0.2/lib/active_record/attribute.rb:5
13423 activerecord-5.0.2/lib/active_record/result.rb:123
13422
High Ref Counts
==============================
283240 activerecord-5.0.2/lib/active_record/result.rb:123
201375 activesupport-5.0.2/lib/active_support/dependencies.rb:293
67110 activerecord-5.0.2/lib/active_record/attribute_set/builder.rb:19
请注意活动\u支持的最高对象计数及其高引用计数。其所指的方法是:
def require(file)
result = false
load_dependency(file) { result = super }
result
end
任何人都知道这个方法在做什么,为什么要保留这么多内存 该行(特别是对super
的调用)接收在执行每个require
过程中创建的所有对象的属性
之所以指向它,是因为它是执行的最后一行Ruby代码,但它所负责的对象与活动支持完全无关:它们是解析正在加载的所有其他Ruby脚本以及初始化任何C扩展的结果。这一行(特别是调用super
)接收在执行每个要求
的过程中创建的所有对象的属性
之所以指出它,是因为它是执行的最后一行Ruby代码,但它所负责的对象与活动支持完全无关:它们是解析所有正在加载的其他Ruby脚本以及初始化任何C扩展的结果