<html>
  <head>
    <meta content="text/html; charset=ISO-8859-15"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <br>
    On 11/08/11 08:13, Andreas Loew wrote:
    <blockquote cite="mid:4EB95546.5000006@oracle.com" type="cite">
      <meta content="text/html; charset=ISO-8859-15"
        http-equiv="Content-Type">
      Hi Jon,<br>
      <br>
      many thanks for your reply :-)<br>
      <br>
      The behavior you mention indeed seems a little "unfortunate"...
      ;-)<br>
      Will this change as part of the efforts to completely remove
      PermGen (part of the "HotRockit" initiative) following the example
      of JRockit?<br>
    </blockquote>
    <br>
    It will be the case after perm gen removal that we will readily know
    if<br>
    classes have been unloaded so will be able to conditionally skip the
    walk of<br>
    the Dictionary for purposes of purging dead classes.<br>
    <br>
    Jon<br>
    <blockquote cite="mid:4EB95546.5000006@oracle.com" type="cite"> <br>
      Thanks again & best regards,<br>
      <br>
      Andreas<br>
      <br>
      -- <br>
      Andreas Loew <br>
      Senior Java Architect <br>
      Oracle Advanced Customer Services Germany <br>
      <br>
      <br>
      Am 08.11.2011 16:58, schrieb Jon Masamitsu:
      <blockquote cite="mid:4EB951BB.3000600@oracle.com" type="cite">Andreas,

        <br>
        <br>
        Hotspot maintains a list of classes that are loaded in the <br>
        Dictionary (dictionary.hpp/cpp).  This list does not keep <br>
        classes alive.  After marking (when we know what classes <br>
        are dead), we walk the list and remove dead classes. <br>
        Hotspot does not keep information that says classes have <br>
        not been unloaded, so the list is always walked. <br>
        <br>
        Jon <br>
        <br>
        On 11/07/11 10:33, Andreas Loew wrote: <br>
        <blockquote type="cite">Hi Jon, <br>
          <br>
          sorry, a follow-up question from my side: As it shouldn't be
          the most normal thing even for a Java EE app to constantly
          dereference classloaders or single classes that need to be
          GC'ed: <br>
          <br>
          In how far does your statement about increased remark pauses
          still apply in case the PermGen / set of loaded classes has
          stayed completely constant between initial mark and remark
          (which should be the usual case)? <br>
          <br>
          And wouldn't there a also be a distinction between PermGen and
          Old Gen? <br>
          <br>
          Many thanks & best regards, <br>
          <br>
          Andreas <br>
          <br>
          -- <br>
          Andreas Loew <br>
          Senior Java Architect <br>
          Oracle Advanced Customer Services Germany <br>
          <br>
          <br>
          Am 07.11.2011 16:44, schrieb Jon Masamitsu: <br>
          <blockquote type="cite">Doing class unloading with CMS will
            often increase the remark pause times <br>
            and so is not on by default. <br>
            <br>
            On 11/5/2011 3:29 PM, Martin Hare Robertson wrote: <br>
            <blockquote type="cite">Hi, <br>
              <br>
              I recently encountered an interesting GC issue with a
              Tomcat application. I <br>
              came up with a simple repro scenario which I posted to
              StackOverflow: <br>
              <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://stackoverflow.com/questions/8017193/when-does-the-perm-gen-get-collected">http://stackoverflow.com/questions/8017193/when-does-the-perm-gen-get-collected</a>
              <br>
              <br>
              To solve this issue I have been encouraged to use <br>
              -XX:+CMSClassUnloadingEnabled. <br>
              I currently use the following GC configuration. <br>
              <br>
              -XX:+UseMembar <br>
              -XX:+UseConcMarkSweepGC <br>
              -XX:+UseParNewGC <br>
              -XX:CMSInitiatingOccupancyFraction=80 <br>
              -XX:+UseCMSInitiatingOccupancyOnly <br>
              <br>
              Is enabling CMSClassUnloadingEnabled likely to have a
              negative perf impact? <br>
              If not, why is it disabled by default? <br>
              <br>
              Thanks <br>
              <br>
              Martin <br>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
       <!-- This signature was generated by the MyDesktop Oracle Business Signature utility version 3.8.6 -->
    </blockquote>
  </body>
</html>