Project

General

Profile

Feature #16929

Add GC.start(compact: true)

Added by tenderlovemaking (Aaron Patterson) 4 months ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:98606]

Description

I have been working on integrating compaction in to the normal GC process (in other words, making compaction automatic). I was thinking about adding GC.start(compact: true) (actually I put it in master without filing a ticket first, and I apologize for doing that).

Right now we use GC.compact, but if compaction becomes part of the normal GC process, it probably makes more sense for the API to be GC.start(compact: true) since that is the API most people use for kicking off a GC.

I am going to change the implementation of GC.compact like this:

diff --git a/gc.rb b/gc.rb
index 881b8659ce..583122db45 100644
--- a/gc.rb
+++ b/gc.rb
@@ -165,7 +165,8 @@ def self.latest_gc_info hash_or_key = nil
   end

   def self.compact
-    __builtin_rb_gc_compact
+    # last option runs compact.
+    __builtin_gc_start_internal true, true, true, true
   end

   # call-seq:

But this could be executed from GC.start too.

Should we add GC.start(compact: true) and deprecate GC.compact? I would still like to keep GC.verify_compaction_references for debugging compaction problems (but maybe change the method name), but I don't know if we need to keep GC.compact.

Thanks.

No data to display

Also available in: Atom PDF