Skip to content

Instantly share code, notes, and snippets.

@casperisfine
Created May 3, 2024 12:44
Show Gist options
  • Save casperisfine/595487f1e4568d3b4fafea3895a04e8c to your computer and use it in GitHub Desktop.
Save casperisfine/595487f1e4568d3b4fafea3895a04e8c to your computer and use it in GitHub Desktop.
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
# gem "rails"
# If you want to test against edge Rails replace the previous line with this:
gem "rails", path: "/Users/byroot/src/github.com/Shopify/rails"
gem "sqlite3", "~> 2.0"
gem "heap-profiler"
end
require "active_record"
require "minitest/autorun"
require "logger"
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
# ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
t.string :title
t.integer :author_id
t.text :body
t.integer :comments_count
t.string :tags
t.datetime :published_at
t.timestamps
end
create_table :comments, force: true do |t|
t.integer :post_id
t.integer :author_id
t.text :body
t.string :tags
t.datetime :published_at
t.timestamps
end
end
class Post < ActiveRecord::Base
self.automatically_invert_plural_associations = true
has_many :comments
end
class Comment < ActiveRecord::Base
self.automatically_invert_plural_associations = true
belongs_to :post
end
Post.transaction do
100.times do
post = Post.create!(author_id: 42, title: "A" * 50, body: "a" * 400, tags: "blah blah blah", published_at: Time.now, comments_count: 20)
20.times do
post.comments.create!(author_id: 42, body: "a" * 120, tags: "blah blah blah", published_at: Time.now)
end
end
end
posts = Post.includes(:comments).to_a
HeapProfiler.report('/tmp/profile-ar') do
posts = Post.includes(:comments).to_a
end
p posts.size
$ heap-profiler /tmp/profile-ar/
Total allocated: 4.61 MB (43077 objects)
Total retained: 3.76 MB (27623 objects)
allocated memory by gem
-----------------------------------
2.41 MB activerecord/lib
1.16 MB sqlite3-2.0.1-arm64-darwin
1.01 MB activemodel/lib
29.13 kB 3.3.0/lib
1.32 kB activesupport/lib
400.00 B other
320.00 B heap-profiler-0.7.0
allocated memory by file
-----------------------------------
1.16 MB sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb
840.00 kB activemodel/lib/active_model/attribute_set/builder.rb
672.00 kB activerecord/lib/active_record/persistence.rb
672.00 kB activerecord/lib/active_record/associations.rb
391.52 kB activerecord/lib/active_record/result.rb
320.00 kB activerecord/lib/active_record/associations/belongs_to_association.rb
168.00 kB activemodel/lib/active_model/attribute.rb
96.60 kB activerecord/lib/active_record/associations/preloader/association.rb
88.04 kB activerecord/lib/active_record/reflection.rb
80.00 kB activerecord/lib/active_record/associations/association.rb
29.13 kB 3.3.0/lib/ruby/3.3.0/set.rb
19.41 kB activerecord/lib/active_record/querying.rb
18.97 kB activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
17.40 kB activerecord/lib/active_record/relation/delegation.rb
8.05 kB activerecord/lib/active_record/associations/preloader/branch.rb
8.00 kB activerecord/lib/active_record/associations/collection_association.rb
2.64 kB activerecord/lib/active_record/relation.rb
1.85 kB activerecord/lib/arel/collectors/bind.rb
1.78 kB activerecord/lib/arel/collectors/sql_string.rb
1.40 kB activerecord/lib/active_record/associations/preloader/batch.rb
1.36 kB activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
1.26 kB activerecord/lib/arel.rb
1.14 kB activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
1.12 kB activesupport/lib/active_support/notifications/fanout.rb
992.00 B activerecord/lib/arel/nodes/homogeneous_in.rb
920.00 B activerecord/lib/active_record/associations/preloader.rb
880.00 B activerecord/lib/active_record/connection_adapters/abstract/quoting.rb
800.00 B activerecord/lib/active_record/core.rb
640.00 B activerecord/lib/active_record/relation/query_methods.rb
624.00 B activerecord/lib/arel/collectors/plain_string.rb
600.00 B activerecord/lib/active_record/relation/predicate_builder.rb
480.00 B activerecord/lib/arel/nodes/select_statement.rb
480.00 B activerecord/lib/arel/nodes/select_core.rb
400.00 B activerecord/lib/arel/visitors/to_sql.rb
320.00 B <internal:kernel>
320.00 B activerecord/lib/active_record/connection_handling.rb
320.00 B activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
320.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb
240.00 B activerecord/lib/arel/select_manager.rb
240.00 B activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
160.00 B activerecord/lib/active_record/relation/where_clause.rb
128.00 B sqlite3-2.0.1-arm64-darwin/lib/sqlite3/database.rb
120.00 B activerecord/lib/arel/table.rb
80.00 B /tmp/ar-size.rb
80.00 B activesupport/lib/active_support/core_ext/enumerable.rb
80.00 B activesupport/lib/active_support/core_ext/array/wrap.rb
80.00 B activerecord/lib/arel/nodes/join_source.rb
80.00 B activerecord/lib/arel/collectors/composite.rb
80.00 B activerecord/lib/active_record/scoping.rb
80.00 B activerecord/lib/active_record/explain_subscriber.rb
allocated memory by location
-----------------------------------
1.16 MB sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
672.00 kB activerecord/lib/active_record/persistence.rb:648
373.70 kB activerecord/lib/active_record/result.rb:169
336.00 kB activerecord/lib/active_record/associations.rb:339
336.00 kB activerecord/lib/active_record/associations.rb:320
336.00 kB activemodel/lib/active_model/attribute_set/builder.rb:28
336.00 kB activemodel/lib/active_model/attribute_set/builder.rb:22
168.00 kB activemodel/lib/active_model/attribute_set/builder.rb:16
160.00 kB activerecord/lib/active_record/associations/belongs_to_association.rb:127
160.00 kB activemodel/lib/active_model/attribute.rb:9
88.00 kB activerecord/lib/active_record/reflection.rb:123
80.00 kB activerecord/lib/active_record/associations/belongs_to_association.rb:130
80.00 kB activerecord/lib/active_record/associations/belongs_to_association.rb:128
80.00 kB activerecord/lib/active_record/associations/association.rb:341
32.00 kB activerecord/lib/active_record/associations/preloader/association.rb:252
29.09 kB 3.3.0/lib/ruby/3.3.0/set.rb:244
20.00 kB activerecord/lib/active_record/associations/preloader/association.rb:206
18.89 kB activerecord/lib/active_record/querying.rb:84
17.78 kB activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb:42
16.88 kB activerecord/lib/active_record/result.rb:163
16.04 kB activerecord/lib/active_record/relation/delegation.rb:98
16.04 kB activerecord/lib/active_record/associations/preloader/association.rb:202
8.00 kB activerecord/lib/active_record/associations/preloader/association.rb:80
8.00 kB activemodel/lib/active_model/attribute.rb:17
4.25 kB activerecord/lib/active_record/associations/preloader/association.rb:106
4.00 kB activerecord/lib/active_record/associations/preloader/branch.rb:96
4.00 kB activerecord/lib/active_record/associations/preloader/association.rb:251
4.00 kB activerecord/lib/active_record/associations/preloader/association.rb:172
4.00 kB activerecord/lib/active_record/associations/collection_association.rb:88
4.00 kB activerecord/lib/active_record/associations/collection_association.rb:87
3.53 kB activerecord/lib/active_record/associations/preloader/association.rb:170
3.49 kB activerecord/lib/active_record/associations/preloader/association.rb:200
1.94 kB sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:54
1.78 kB activerecord/lib/arel/collectors/sql_string.rb:22
1.28 kB activerecord/lib/active_record/relation/delegation.rb:129
1.26 kB activerecord/lib/active_record/associations/preloader/branch.rb:86
1.10 kB activerecord/lib/active_record/relation/predicate_builder/array_handler.rb:15
1.10 kB activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb:51
1.06 kB activerecord/lib/active_record/associations/preloader/branch.rb:80
1.01 kB activerecord/lib/arel/collectors/bind.rb:9
880.00 B activerecord/lib/active_record/connection_adapters/abstract/quoting.rb:225
864.00 B activerecord/lib/arel.rb:54
840.00 B activerecord/lib/arel/nodes/homogeneous_in.rb:42
840.00 B activerecord/lib/arel/collectors/bind.rb:22
800.00 B activerecord/lib/active_record/core.rb:408
704.00 B activerecord/lib/active_record/result.rb:177
640.00 B activerecord/lib/active_record/relation.rb:76
640.00 B sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:186
624.00 B activerecord/lib/arel/collectors/plain_string.rb:7
400.00 B activerecord/lib/active_record/relation.rb:968
allocated memory by class
-----------------------------------
1.43 MB Hash
1.07 MB String
746.94 kB Array
640.00 kB Comment
320.00 kB ActiveRecord::Associations::BelongsToAssociation
168.00 kB ActiveModel::LazyAttributeSet
160.00 kB ActiveModel::Attribute::FromDatabase
32.00 kB Post
16.00 kB ActiveRecord::Associations::HasManyAssociation
8.00 kB ActiveModel::Attribute::WithCastValue
5.76 kB <ifunc> (IMEMO)
4.36 kB <memo> (IMEMO)
4.04 kB Set
640.00 B Comment::ActiveRecord_Relation
320.00 B Post::ActiveRecord_Relation
320.00 B Arel::Nodes::SelectCore
320.00 B ActiveSupport::Notifications::Fanout::Handle
320.00 B <mapping_buffer> (DATA)
320.00 B <callcache> (IMEMO)
200.00 B <constcache> (IMEMO)
160.00 B Arel::Nodes::SelectStatement
160.00 B Arel::Collectors::Composite
160.00 B ActiveRecord::Result
160.00 B ActiveRecord::Associations::Preloader::Branch
160.00 B ActiveRecord::Associations::Preloader::Association
128.00 B SQLite3::Statement
120.00 B Arel::Attributes::Attribute
120.00 B <throw_data> (IMEMO)
96.00 B <ment> (IMEMO)
80.00 B Proc
80.00 B Arel::SelectManager
80.00 B Arel::Nodes::JoinSource
80.00 B Arel::Collectors::SQLString
80.00 B Arel::Collectors::Bind
80.00 B ActiveSupport::Notifications::Fanout::EventedGroup
80.00 B ActiveRecord::Relation::WhereClause
80.00 B ActiveRecord::Associations::Preloader::Association::LoaderRecords
80.00 B ActiveRecord::Associations::Preloader
72.00 B <env> (IMEMO)
40.00 B Range
40.00 B Arel::Nodes::HomogeneousIn
40.00 B ActiveRecord::Associations::Preloader::Batch
40.00 B ActiveRecord::Associations::Preloader::Association::LoaderQuery
allocated objects by gem
-----------------------------------
21802 activerecord/lib
12738 sqlite3-2.0.1-arm64-darwin
8400 activemodel/lib
102 3.3.0/lib
23 activesupport/lib
8 heap-profiler-0.7.0
4 other
allocated objects by file
-----------------------------------
12737 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb
8000 activerecord/lib/active_record/associations/belongs_to_association.rb
6300 activemodel/lib/active_model/attribute_set/builder.rb
4200 activerecord/lib/active_record/associations.rb
2201 activerecord/lib/active_record/reflection.rb
2104 activerecord/lib/active_record/result.rb
2100 activerecord/lib/active_record/persistence.rb
2100 activemodel/lib/active_model/attribute.rb
2000 activerecord/lib/active_record/associations/association.rb
628 activerecord/lib/active_record/associations/preloader/association.rb
200 activerecord/lib/active_record/associations/collection_association.rb
134 activerecord/lib/active_record/associations/preloader/branch.rb
102 3.3.0/lib/ruby/3.3.0/set.rb
35 activerecord/lib/active_record/relation.rb
29 activerecord/lib/active_record/associations/preloader/batch.rb
18 activesupport/lib/active_support/notifications/fanout.rb
18 activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
13 activerecord/lib/active_record/relation/query_methods.rb
12 activerecord/lib/arel/nodes/select_core.rb
12 activerecord/lib/active_record/relation/predicate_builder.rb
11 activerecord/lib/active_record/relation/delegation.rb
11 activerecord/lib/active_record/querying.rb
10 activerecord/lib/arel/visitors/to_sql.rb
10 activerecord/lib/arel.rb
10 activerecord/lib/active_record/associations/preloader.rb
8 activerecord/lib/active_record/core.rb
8 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb
6 activerecord/lib/arel/nodes/select_statement.rb
6 activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb
4 activerecord/lib/arel/select_manager.rb
4 activerecord/lib/arel/collectors/sql_string.rb
4 activerecord/lib/active_record/relation/where_clause.rb
4 activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
3 activerecord/lib/arel/table.rb
3 activerecord/lib/arel/nodes/homogeneous_in.rb
3 activerecord/lib/arel/collectors/bind.rb
3 activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
2 <internal:kernel>
2 /tmp/ar-size.rb
2 activesupport/lib/active_support/core_ext/enumerable.rb
2 activesupport/lib/active_support/core_ext/array/wrap.rb
2 activerecord/lib/arel/nodes/join_source.rb
2 activerecord/lib/arel/collectors/plain_string.rb
2 activerecord/lib/arel/collectors/composite.rb
2 activerecord/lib/active_record/scoping.rb
2 activerecord/lib/active_record/explain_subscriber.rb
2 activerecord/lib/active_record/connection_handling.rb
2 activerecord/lib/active_record/connection_adapters/abstract/quoting.rb
2 activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
1 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/database.rb
allocated objects by location
-----------------------------------
12702 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
4000 activerecord/lib/active_record/associations/belongs_to_association.rb:127
2200 activerecord/lib/active_record/reflection.rb:123
2100 activerecord/lib/active_record/persistence.rb:648
2100 activerecord/lib/active_record/associations.rb:339
2100 activerecord/lib/active_record/associations.rb:320
2100 activemodel/lib/active_model/attribute_set/builder.rb:28
2100 activemodel/lib/active_model/attribute_set/builder.rb:22
2100 activemodel/lib/active_model/attribute_set/builder.rb:16
2098 activerecord/lib/active_record/result.rb:169
2000 activerecord/lib/active_record/associations/belongs_to_association.rb:130
2000 activerecord/lib/active_record/associations/belongs_to_association.rb:128
2000 activerecord/lib/active_record/associations/association.rb:341
2000 activemodel/lib/active_model/attribute.rb:9
200 activerecord/lib/active_record/associations/preloader/association.rb:80
101 3.3.0/lib/ruby/3.3.0/set.rb:244
100 activerecord/lib/active_record/associations/preloader/branch.rb:96
100 activerecord/lib/active_record/associations/preloader/association.rb:252
100 activerecord/lib/active_record/associations/preloader/association.rb:251
100 activerecord/lib/active_record/associations/preloader/association.rb:206
100 activerecord/lib/active_record/associations/preloader/association.rb:172
100 activerecord/lib/active_record/associations/collection_association.rb:88
100 activerecord/lib/active_record/associations/collection_association.rb:87
100 activemodel/lib/active_model/attribute.rb:17
16 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:186
9 activerecord/lib/active_record/relation.rb:1115
8 activesupport/lib/active_support/notifications/fanout.rb:235
8 activerecord/lib/active_record/relation/delegation.rb:129
8 activerecord/lib/active_record/core.rb:408
8 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:185
6 activerecord/lib/arel/visitors/to_sql.rb:898
6 activerecord/lib/arel.rb:54
6 activerecord/lib/active_record/relation.rb:1128
6 activerecord/lib/active_record/associations/preloader/branch.rb:71
6 activerecord/lib/active_record/associations/preloader/batch.rb:41
6 activerecord/lib/active_record/associations/preloader/association.rb:25
6 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:54
5 activerecord/lib/active_record/associations/preloader/batch.rb:31
4 activesupport/lib/active_support/notifications/fanout.rb:274
4 activerecord/lib/arel/visitors/to_sql.rb:126
4 activerecord/lib/arel/nodes/select_statement.rb:11
4 activerecord/lib/arel/collectors/sql_string.rb:22
4 activerecord/lib/arel.rb:61
4 activerecord/lib/active_record/relation.rb:76
4 activerecord/lib/active_record/querying.rb:84
4 activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:1163
4 activerecord/lib/active_record/associations/preloader/branch.rb:22
4 activerecord/lib/active_record/associations/preloader/branch.rb:121
4 activerecord/lib/active_record/associations/preloader.rb:121
3 activerecord/lib/active_record/associations/preloader/branch.rb:123
allocated objects by class
-----------------------------------
12868 Array
12827 String
8557 Hash
2100 ActiveModel::LazyAttributeSet
2000 Comment
2000 ActiveRecord::Associations::BelongsToAssociation
2000 ActiveModel::Attribute::FromDatabase
144 <ifunc> (IMEMO)
109 <memo> (IMEMO)
101 Set
100 Post
100 ActiveRecord::Associations::HasManyAssociation
100 ActiveModel::Attribute::WithCastValue
8 <mapping_buffer> (DATA)
8 <callcache> (IMEMO)
5 <constcache> (IMEMO)
4 Comment::ActiveRecord_Relation
4 ActiveSupport::Notifications::Fanout::Handle
3 Arel::Attributes::Attribute
3 <throw_data> (IMEMO)
2 Post::ActiveRecord_Relation
2 Arel::SelectManager
2 Arel::Nodes::SelectStatement
2 Arel::Nodes::SelectCore
2 Arel::Nodes::JoinSource
2 Arel::Collectors::SQLString
2 Arel::Collectors::Composite
2 Arel::Collectors::Bind
2 ActiveSupport::Notifications::Fanout::EventedGroup
2 ActiveRecord::Result
2 ActiveRecord::Relation::WhereClause
2 ActiveRecord::Associations::Preloader::Branch
2 <ment> (IMEMO)
1 SQLite3::Statement
1 Range
1 Proc
1 Arel::Nodes::HomogeneousIn
1 ActiveRecord::Associations::Preloader::Batch
1 ActiveRecord::Associations::Preloader::Association::LoaderRecords
1 ActiveRecord::Associations::Preloader::Association::LoaderQuery
1 ActiveRecord::Associations::Preloader::Association
1 ActiveRecord::Associations::Preloader
1 <env> (IMEMO)
retained memory by gem
-----------------------------------
1.76 MB activerecord/lib
1.00 MB activemodel/lib
980.00 kB sqlite3-2.0.1-arm64-darwin
25.60 kB 3.3.0/lib
320.00 B heap-profiler-0.7.0
80.00 B other
retained memory by file
-----------------------------------
980.00 kB sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb
840.00 kB activemodel/lib/active_model/attribute_set/builder.rb
672.00 kB activerecord/lib/active_record/persistence.rb
672.00 kB activerecord/lib/active_record/associations.rb
374.40 kB activerecord/lib/active_record/result.rb
160.00 kB activemodel/lib/active_model/attribute.rb
32.18 kB activerecord/lib/active_record/associations/preloader/association.rb
25.60 kB 3.3.0/lib/ruby/3.3.0/set.rb
4.00 kB activerecord/lib/active_record/associations/collection_association.rb
1.06 kB activerecord/lib/active_record/querying.rb
320.00 B activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
320.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb
80.00 B /tmp/ar-size.rb
80.00 B activerecord/lib/active_record/relation/delegation.rb
80.00 B activerecord/lib/active_record/associations/belongs_to_association.rb
72.00 B activerecord/lib/active_record/scoping.rb
40.00 B activerecord/lib/active_record/relation.rb
retained memory by location
-----------------------------------
980.00 kB sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
672.00 kB activerecord/lib/active_record/persistence.rb:648
373.70 kB activerecord/lib/active_record/result.rb:169
336.00 kB activerecord/lib/active_record/associations.rb:339
336.00 kB activerecord/lib/active_record/associations.rb:320
336.00 kB activemodel/lib/active_model/attribute_set/builder.rb:28
336.00 kB activemodel/lib/active_model/attribute_set/builder.rb:22
168.00 kB activemodel/lib/active_model/attribute_set/builder.rb:16
160.00 kB activemodel/lib/active_model/attribute.rb:9
32.00 kB activerecord/lib/active_record/associations/preloader/association.rb:252
25.60 kB 3.3.0/lib/ruby/3.3.0/set.rb:244
4.00 kB activerecord/lib/active_record/associations/collection_association.rb:88
1.06 kB activerecord/lib/active_record/querying.rb:84
704.00 B activerecord/lib/active_record/result.rb:177
320.00 B activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:1185
176.00 B activerecord/lib/active_record/associations/preloader/association.rb:25
80.00 B /tmp/ar-size.rb:67
80.00 B activerecord/lib/active_record/relation/delegation.rb:78
80.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:58
80.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:53
80.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:52
72.00 B activerecord/lib/active_record/scoping.rb:27
40.00 B activerecord/lib/active_record/relation.rb:326
40.00 B activerecord/lib/active_record/associations/belongs_to_association.rb:130
40.00 B activerecord/lib/active_record/associations/belongs_to_association.rb:127
40.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:81
40.00 B heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:57
retained memory by class
-----------------------------------
1.41 MB Hash
980.00 kB String
640.00 kB Comment
320.00 kB ActiveRecord::Associations::BelongsToAssociation
168.00 kB ActiveModel::LazyAttributeSet
160.00 kB ActiveModel::Attribute::FromDatabase
33.18 kB Array
32.00 kB Post
16.00 kB ActiveRecord::Associations::HasManyAssociation
4.00 kB Set
360.00 B <callcache> (IMEMO)
200.00 B <constcache> (IMEMO)
96.00 B <ment> (IMEMO)
72.00 B Thread::Mutex
retained objects by gem
-----------------------------------
10600 sqlite3-2.0.1-arm64-darwin
8613 activerecord/lib
8300 activemodel/lib
100 3.3.0/lib
8 heap-profiler-0.7.0
2 other
retained objects by file
-----------------------------------
10600 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb
6300 activemodel/lib/active_model/attribute_set/builder.rb
4200 activerecord/lib/active_record/associations.rb
2100 activerecord/lib/active_record/result.rb
2100 activerecord/lib/active_record/persistence.rb
2000 activemodel/lib/active_model/attribute.rb
104 activerecord/lib/active_record/associations/preloader/association.rb
100 3.3.0/lib/ruby/3.3.0/set.rb
100 activerecord/lib/active_record/associations/collection_association.rb
8 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb
2 /tmp/ar-size.rb
2 activerecord/lib/active_record/relation/delegation.rb
2 activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
2 activerecord/lib/active_record/associations/belongs_to_association.rb
1 activerecord/lib/active_record/scoping.rb
1 activerecord/lib/active_record/relation.rb
1 activerecord/lib/active_record/querying.rb
retained objects by location
-----------------------------------
10600 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
2100 activerecord/lib/active_record/persistence.rb:648
2100 activerecord/lib/active_record/associations.rb:339
2100 activerecord/lib/active_record/associations.rb:320
2100 activemodel/lib/active_model/attribute_set/builder.rb:28
2100 activemodel/lib/active_model/attribute_set/builder.rb:22
2100 activemodel/lib/active_model/attribute_set/builder.rb:16
2098 activerecord/lib/active_record/result.rb:169
2000 activemodel/lib/active_model/attribute.rb:9
100 3.3.0/lib/ruby/3.3.0/set.rb:244
100 activerecord/lib/active_record/associations/preloader/association.rb:252
100 activerecord/lib/active_record/associations/collection_association.rb:88
4 activerecord/lib/active_record/associations/preloader/association.rb:25
2 /tmp/ar-size.rb:67
2 activerecord/lib/active_record/result.rb:177
2 activerecord/lib/active_record/relation/delegation.rb:78
2 activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:1185
2 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:58
2 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:53
2 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:52
1 activerecord/lib/active_record/scoping.rb:27
1 activerecord/lib/active_record/relation.rb:326
1 activerecord/lib/active_record/querying.rb:84
1 activerecord/lib/active_record/associations/belongs_to_association.rb:130
1 activerecord/lib/active_record/associations/belongs_to_association.rb:127
1 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:81
1 heap-profiler-0.7.0/lib/heap_profiler/reporter.rb:57
retained objects by class
-----------------------------------
10600 String
8502 Hash
2100 ActiveModel::LazyAttributeSet
2000 Comment
2000 ActiveRecord::Associations::BelongsToAssociation
2000 ActiveModel::Attribute::FromDatabase
104 Array
100 Set
100 Post
100 ActiveRecord::Associations::HasManyAssociation
9 <callcache> (IMEMO)
5 <constcache> (IMEMO)
2 <ment> (IMEMO)
1 Thread::Mutex
Allocated String Report
-----------------------------------
84.00 kB 2100 "blah blah blah"
2100 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
80.00 kB 2000 "post"
2000 activerecord/lib/active_record/reflection.rb:123
320.00 kB 2000 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2000 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
8.00 kB 200 "comments"
200 activerecord/lib/active_record/reflection.rb:123
64.00 kB 100 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
100 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
8.00 kB 100 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
100 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
240.00 B 6 "datetime(6)"
3 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:186
3 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:185
120.00 B 3 "posts"
3 activerecord/lib/active_record/relation.rb:1126
120.00 B 3 "integer"
3 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:186
120.00 B 3 "INTEGER"
3 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:185
80.00 B 2 "varchar"
1 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:186
1 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:185
160.00 B 2 "2024-05-03 12:33:13.896052"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895868"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895451"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895267"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895079"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894887"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894698"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894511"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894322"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894134"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893939"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893730"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893541"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893027"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892843"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892663"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892478"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892293"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892106"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891908"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891459"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891200"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891018"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.890783"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889970"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889787"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889599"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889413"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889231"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889051"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888873"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888697"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888523"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888347"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888171"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887991"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887624"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.831777"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
224.00 B 2 "*"
2 activerecord/lib/arel.rb:54
Retained String Report
-----------------------------------
84.00 kB 2100 "blah blah blah"
2100 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
320.00 kB 2000 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2000 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
64.00 kB 100 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
100 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
8.00 kB 100 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
100 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.896052"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895868"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895451"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895267"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.895079"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894887"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894698"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894511"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894322"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.894134"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893939"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893730"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893541"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.893027"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892843"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892663"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892478"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892293"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.892106"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891908"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891459"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891200"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.891018"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.890783"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889970"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889787"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889599"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889413"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889231"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.889051"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888873"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888697"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888523"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888347"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.888171"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887991"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887624"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887448"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887267"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.887080"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.886644"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.886469"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.886293"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.886117"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.885938"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
160.00 B 2 "2024-05-03 12:33:13.558760"
2 sqlite3-2.0.1-arm64-darwin/lib/sqlite3/statement.rb:125
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment