<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>257622</bug_id>
          
          <creation_ts>2023-06-01 14:37:42 -0700</creation_ts>
          <short_desc>Add a way to run incremental GC sweeps during runloop idle time in between rendering updates</short_desc>
          <delta_ts>2023-06-15 07:56:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>257650</dependson>
    
    <dependson>258032</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>jarred</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1959418</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2023-06-01 14:37:42 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959424</commentid>
    <comment_count>1</comment_count>
    <who name="Jarred Sumner">jarred</who>
    <bug_when>2023-06-01 14:57:58 -0700</bug_when>
    <thetext>We had a similar issue in Bun and ended up doing this: https://github.com/oven-sh/bun/blob/4378ef8e97839f950ddfa180e466d0a8db187681/src/bun.js/event_loop.zig#L320

Just before the event loop idles, we check if the heap size changed since the previous check and if so, we schedule the garbage collector asynchronously. Then every so often we run a synchronous GC

It fixed issues where Bun’s memory usage permanently would go up. But we still have issues with synchronous work. It doesn’t go down much if you do lots of blocking synchronous work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1960625</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-06-08 14:38:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/110488068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1961244</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2023-06-12 22:53:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/110076652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1961473</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2023-06-13 21:09:25 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/14945</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1961802</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-06-15 07:56:21 -0700</bug_when>
    <thetext>Committed 265197@main (1a501dce9fa2): &lt;https://commits.webkit.org/265197@main&gt;

Reviewed commits have been landed. Closing PR #14945 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>