Html程序  |  84行  |  2.41 KB

<html>
  <head>
    <title>Heap Profiler: heap snapshots comparison test</title>
    <script type="text/javascript">
      var aHolder = [], bHolder = [], cHolder = [], dHolder = [];

      function A(x) {
        this.x = x;
      }

      function B(x) {
        this.x = x;
      }

      function C() {}

      var i;
      for (i = 0; i < 100; ++i) {
        var b = new B('hello');
        bHolder.push(b);
        aHolder.push(new A(b));
        b = null;
      }
      for (i = 0; i < 25; ++i) {
        cHolder.push(new C());
      }

      function D() {}

      function changeStuff() {
        if (aHolder.length > 0) {
          aHolder.splice(aHolder.length - 25, 25);
        }
        for (i = 0; i < 25; ++i) {
          bHolder.push(new B('hello'));
        }
        cHolder = [];
        for (i = 0; i < 25; ++i) {
          dHolder.push(new D());
        }
      }
    </script>
  </head>
  <body>
    This is the test for heap snapshot comparison functionality.
    <br>
    <br>
    To use this test:
    <ul>
      <li>load file in the browser;
      <li>open DevTools (Ctrl+Shift+I on Win/Linux, Command+Option+I on Mac);
      <li>go to 'Profiles' page;
      <li>press 'Take heap snapshot' button
        (eye icon on the left side of the status bar);
      <li>press
        <input type="button" name="changeStuff" value="this button" onclick="changeStuff()" />;
      <li>press 'Take heap snapshot' button again;
    </ul>
    <br>
    On the left pane under 'Heap snapshots' section, items called
    'Snapshot 1' and 'Snapshot 2' must appear. Select 'Snapshot 2'. 
    Ensure that absolute values are shown (not percents).
    <br>
    <br>
    TEST 1. Verify the following:
    <ul>
      <li>the value in '+/- Count' column for 'A' must be '-25';
      <li>after expanding 'A' item, the value in '+/- Count' column
        for 'Array' child entry must also be '-25';
      <li>the value in '+/- Count' column for 'B' must be '+25';
      <li>after expanding 'B' item, the value in '+/- Count' column
        for 'Array' child entry must also be '+25'; the value for 'A'
        child must be '-25';
    </ul>
    <br>
    TEST 2. Change display to percent view (using the percent button on the
    status bar). Verify the following:
    <ul>
      <li>values in '+/- Count' and '+/- Size' columns for 'C' must be 'deleted';
      <li>values in '+/- Count' and '+/- Size' columns for 'D' must be 'new';
    </ul>
  </body>
</html>