title: Understanding Object URLS for client-side files and how to free the memory
body: <p>I am using <code>createObjectURL</code> to get a reference URL  to a local image file.  When I am done with the file/image, I call <code>revokeObjectURL</code> to free that memory.  Everything works fine for me but I just want to be sure that I am releasing all the memory I can.  </p>
  
  <p>My concern arose after I inspected the <code>chrome://blob-internals</code> page.  Upon calling <code>createObjectURL</code> and using the image, I noticed two entries were created.  One with url 
  <code>blob:blobinternal:///d17c4eef-28e7-42bd-bafa-78d5cb86e761</code> </p>
  
  <p>and the other </p>
  
  <p><code>blob:http://localhost/dbfe7b09-81b1-48a4-87cd-d579b96adaf8</code></p>
  
  <p>Both referred to the same local file path though.  Upon calling <code>revokeObjectURL</code> only the second entry was removed from <code>chrome://blob-internals</code>.  Why does this occur, how do I get rid of the other entry and what is the difference between the two types?</p>
  
  <p>Also, I have seen examples of people revoking the URL before even using the image.  What effect does this have?</p>
  
  <p>Some insight into the topic would be much appreciated! :)</p>
  
  <p><strong>EDIT</strong>:
  I've created an example at <a href="http://jsfiddle.net/ag92S/5/" rel="noreferrer">jsfiddle</a>.  So first open <a href="http://chrome://blob-internals/" rel="noreferrer">blobinternals</a> and remove any existing blobs.  Then run the jsfiddle example, and choose an image file on your machine.  Then refresh blobinternals to see what it added.  Then click "revoke URL" in my example.  Finally refresh blobinternals to see what blobs remain.</p>