<?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>65445</bug_id>
          
          <creation_ts>2011-07-31 21:34:07 -0700</creation_ts>
          <short_desc>JSC does a GC even when the heap still has free pages</short_desc>
          <delta_ts>2011-08-02 12:57:24 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>oliver</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444512</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-31 21:34:07 -0700</bug_when>
    <thetext>The JSC GC has an elastic notion of free memory, where free blocks left over from a previous garbage collection are steadily returned to the OS provided that the application does not experience a subsequent heap usage spike that would need those blocks again.  But the GC does not leverage this as well as it could.  It separately maintains a watermark limit for invoking collection. This limit is independent of the number of free pages.  Thus, if an application experiences a memory usage peak where the heap is grown, and then memory usage dips resulting in a lower watermark, then the heap will be in the following awkward state: the free block pool will still have blocks available for immediate use in allocations, but the collector will insist on running anyway.

Ideally, the elasticity of the free block pool should be coupled to the GC&apos;s decision function for when to invoke collection, so that we don&apos;t do full collections when there is still free memory available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444515</commentid>
    <comment_count>1</comment_count>
      <attachid>102476</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-31 21:53:31 -0700</bug_when>
    <thetext>Created attachment 102476
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445452</commentid>
    <comment_count>2</comment_count>
      <attachid>102476</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 12:57:20 -0700</bug_when>
    <thetext>Comment on attachment 102476
the patch

Clearing flags on attachment: 102476

Committed r92217: &lt;http://trac.webkit.org/changeset/92217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445453</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 12:57:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102476</attachid>
            <date>2011-07-31 21:53:31 -0700</date>
            <delta_ts>2011-08-02 12:57:20 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>elasticheapsize_patch_2.diff</filename>
            <type>text/plain</type>
            <size>4713</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIwOTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMDctMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgZG9lcyBhIEdDIGV2ZW4gd2hlbiB0aGUgaGVhcCBzdGlsbCBoYXMgZnJlZSBwYWdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU0NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIElmIHRo
ZSBoaWdoIHdhdGVybWFyayBpcyBub3QgcmVhY2hlZCwgdGhlbiB3ZSBhbGxvY2F0ZSBuZXcgYmxv
Y2tzIGFzCisgICAgICAgIGJlZm9yZS4gIElmIHRoZSBjdXJyZW50IHdhdGVybWFyayBkb2VzIHJl
YWNoIChvciBleGNlZWQpIHRoZSBoaWdoCisgICAgICAgIHdhdGVybWFyaywgdGhlbiB3ZSBjaGVj
ayBpZiB0aGVyZSBpcyBhIGJsb2NrIG9uIHRoZSBmcmVlIGJsb2NrIHBvb2wuCisgICAgICAgIElm
IHRoZXJlIGlzLCB3ZSBzaW1wbHkgYWxsb2NhdGlvbiBmcm9tIGl0LiAgSWYgdGhlcmUgaXNuJ3Qs
IHdlCisgICAgICAgIGludm9rZSBhIGNvbGxlY3RpbiBhcyBiZWZvcmUuICBUaGlzIGVmZmVjdGl2
ZWx5IGNvdXBsZXMgdGhlIGVsYXN0aWMKKyAgICAgICAgc2NhdmVuZ2luZyB0byB0aGUgY29sbGVj
dG9yJ3MgZGVjaXNpb24gZnVuY3Rpb24uICBUaGF0IGlzLCBpZiBhbgorICAgICAgICBhcHBsaWNh
dGlvbiByYXBpZGx5IHZhcmllcyBpdHMgaGVhcCB1c2FnZSAoc29tZXRpbWVzIHVzaW5nIG1vcmUg
YW5kCisgICAgICAgIHNvbWV0aW1lcyBsZXNzKSB0aGVuIHRoZSBjb2xsZWN0b3Igd2lsbCBub3Qg
dGhyYXNoIGFzIGl0IHVzZWQgdG8uCisgICAgICAgIEJ1dCBpZiBoZWFwIHVzYWdlIGRyb3BzIGFu
ZCBzdGF5cyBsb3cgdGhlbiB0aGUgc2NhdmVuZ2VyIHRocmVhZCBhbmQKKyAgICAgICAgdGhlIEdD
IHdpbGwgZXZlbnR1YWxseSByZWFjaCBhIGtpbmQgb2YgY29uc2Vuc3VzOiB0aGUgR0Mgd2lsbCBz
ZXQKKyAgICAgICAgdGhlIHdhdGVybWFyayBsb3cgYmVjYXVzZSBvZiBsb3cgaGVhcCB1c2FnZSwg
YW5kIHRoZSBzY2F2ZW5nZXIgdGhyZWFkCisgICAgICAgIHdpbGwgc3RlYWRpbHkgZWxpbWluYXRl
IHBhZ2VzIGZyb20gdGhlIGZyZWUgcGFnZSBwb29sLCB1bnRpbCB0aGUgc2l6ZQorICAgICAgICBv
ZiB0aGUgZnJlZSBwb29sIGlzIGJlbG93IHRoZSBoaWdoIHdhdGVybWFyay4KKyAgICAgICAgCisg
ICAgICAgIE9uIGNvbW1hbmQtbGluZSwgdGhpcyBpcyBuZXV0cmFsIG9uIFN1blNwaWRlciBhbmQg
S3Jha2VuIGFuZCBhIDMlIHdpbgorICAgICAgICBvbiBWOC4gIEluIGJyb3dzZXIsIHRoaXMgaXMg
YSAxJSB3aW4gb24gVjggYW5kIG5ldXRyYWwgb24gdGhlIG90aGVyCisgICAgICAgIHR3by4KKwor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmFsbG9jYXRlU2xv
d0Nhc2UpOgorICAgICAgICAoSlNDOjpIZWFwOjphbGxvY2F0ZUJsb2NrKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKwogMjAxMS0wNy0zMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3Vn
aEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0Njc5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNp
b24gOTIwOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDA0LDggKzQwNCwxNiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZVNsb3dDYXNl
KE5ld1NwYWNlOjpTCiAgICAgaWYgKExJS0VMWShyZXN1bHQgIT0gMCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAKLSAgICBpZiAobV9uZXdTcGFjZS53YXRlck1hcmsoKSA8IG1fbmV3U3BhY2Uu
aGlnaFdhdGVyTWFyaygpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCkgewotICAgICAgICBtX25ld1Nw
YWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYWxsb2NhdGVCbG9jayhzaXplQ2xhc3MuY2VsbFNpemUp
KTsKKyAgICBBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7CisgICAgCisgICAgaWYg
KG1fbmV3U3BhY2Uud2F0ZXJNYXJrKCkgPCBtX25ld1NwYWNlLmhpZ2hXYXRlck1hcmsoKSB8fCAh
bV9pc1NhZmVUb0NvbGxlY3QpCisgICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9u
TXVzdFN1Y2NlZWQ7CisgICAgZWxzZQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2Nh
dGlvbkNhbkZhaWw7CisgICAgCisgICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9j
ayhzaXplQ2xhc3MuY2VsbFNpemUsIGFsbG9jYXRpb25FZmZvcnQpOworICAgIGlmIChibG9jaykg
eworICAgICAgICBtX25ld1NwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOwogICAgICAg
ICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwogICAgICAgICBBU1NFUlQo
cmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQyMCw3ICs0MjgsNyBAQCB2b2lk
KiBIZWFwOjphbGxvY2F0ZVNsb3dDYXNlKE5ld1NwYWNlOjpTCiAgICAgCiAgICAgQVNTRVJUKG1f
bmV3U3BhY2Uud2F0ZXJNYXJrKCkgPCBtX25ld1NwYWNlLmhpZ2hXYXRlck1hcmsoKSk7CiAgICAg
Ci0gICAgbV9uZXdTcGFjZS5hZGRCbG9jayhzaXplQ2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNs
YXNzLmNlbGxTaXplKSk7CisgICAgbV9uZXdTcGFjZS5hZGRCbG9jayhzaXplQ2xhc3MsIGFsbG9j
YXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQpKTsKICAg
ICAKICAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwogICAgIEFTU0VSVChyZXN1
bHQpOwpAQCAtNjk0LDExICs3MDIsMTQgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2NhdGlvbihz
aXplX3QgYnl0ZQogICAgIHJldHVybiB0cnVlOwogfQogCi1NYXJrZWRCbG9jayogSGVhcDo6YWxs
b2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUpCitNYXJrZWRCbG9jayogSGVhcDo6YWxsb2NhdGVC
bG9jayhzaXplX3QgY2VsbFNpemUsIEhlYXA6OkFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVm
Zm9ydCkKIHsKICAgICBNYXJrZWRCbG9jayogYmxvY2s7CiAgICAgCiAjaWYgIUVOQUJMRShMQVpZ
X0JMT0NLX0ZSRUVJTkcpCisgICAgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2NhdGlvbkNh
bkZhaWwpCisgICAgICAgIHJldHVybiAwOworICAgIAogICAgIGJsb2NrID0gTWFya2VkQmxvY2s6
OmNyZWF0ZSh0aGlzLCBjZWxsU2l6ZSk7CiAjZWxzZQogICAgIHsKQEAgLTcxMiw2ICs3MjMsOCBA
QCBNYXJrZWRCbG9jayogSGVhcDo6YWxsb2NhdGVCbG9jayhzaXplX3QgCiAgICAgfQogICAgIGlm
IChibG9jaykKICAgICAgICAgYmxvY2stPmluaXRGb3JDZWxsU2l6ZShjZWxsU2l6ZSk7CisgICAg
ZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCkKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgZWxzZQogICAgICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUo
dGhpcywgY2VsbFNpemUpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CShyZXZpc2lvbiA5MjA5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI0LDEzICsxMjQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CisgICAgICAgIAor
ICAgICAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFs
bG9jYXRpb25DYW5GYWlsIH07CiAKICAgICAgICAgYm9vbCBpc1ZhbGlkQWxsb2NhdGlvbihzaXpl
X3QpOwogICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7
CiAgICAgICAgIHZvaWQgY2Fub25pY2FsaXplQmxvY2tzKCk7CiAgICAgICAgIHZvaWQgcmVzZXRB
bGxvY2F0b3IoKTsKIAotICAgICAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3Qg
Y2VsbFNpemUpOworICAgICAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3QgY2Vs
bFNpemUsIEFsbG9jYXRpb25FZmZvcnQpOwogICAgICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2Vk
QmxvY2sqKTsKIAogICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>