6 Replies Latest reply: Oct 26, 2014 5:33 PM by carl type3 RSS

    CF10 with Java 8

    carl type3 Community Member

      Hello,

       

      Has anyone else tried to use CF with Java 8 preview? If you have tried Java 8 preview have you noticed anything interesting?

       

      Something to share. Java 8 uses memory differently to Java 7 or 6 (reminder Java 6 is EOL). The non heap memory Permanent generation has been done away with and is now consumed in a new memory space called Metaspace. I guess that will mean CF folks will not see the dreaded “java.lang.OutOfMemoryError: PermGen space” in coldfusion-out.log anymore.


      For interested readers here is my CF10 Summary part:

       

      Server Settings > Settings Summary

      System Information  
       
      Server Product  ColdFusion 
      Version  ColdFusion 10,284825 
      Operating System  Windows 7   
      OS Version  6.1   
      Update Level  /C:/ColdFusion10/cfusion/lib/updates/chf10000010.jar   
      Adobe Driver Version  4.1 (Build 0001)   

      JVM Details

       

      Java Version  1.8.0-ea   
      Java Vendor  Oracle Corporation   
      Java Vendor URL  http://java.oracle.com/   
      Java Home  C:\Program Files\Java\jdk1.8.0\jre   
      Java File Encoding  Cp1252   
      Java Default Locale  en_AU   
      User Dir  C:\ColdFusion10\cfusion\bin   
      Java VM Specification Version  1.8   
      Java VM Specification Vendor  Oracle Corporation   
      Java VM Specification Name  Java Virtual Machine Specification   
      Java VM Version  25.0-b48   
      Java VM Vendor  Oracle Corporation   
      Java VM Name  Java HotSpot(TM) Server VM   
      Java Specification Version  1.8   
      Java Specification Vendor  Oracle Corporation   
      Java Specification Name  Java Platform API Specification   
      Java Class Version  52.0   

       

      For those more curious about Java memory heap, non heap spaces and garbage collection here is a portion of CF10 verbose Java 8 log:


      {Heap before GC invocations=25 (full 11):
      PSYoungGen      total 116736K, used 58624K [0x25840000, 0x30300000, 0x30300000)
        eden space 58624K, 100% used [0x25840000,0x29180000,0x29180000)
        from space 58112K, 0% used [0x2ca40000,0x2ca40000,0x30300000)
        to   space 58112K, 0% used [0x29180000,0x29180000,0x2ca40000)
      ParOldGen       total 349440K, used 349401K [0x10300000, 0x25840000, 0x25840000)
        object space 349440K, 99% used [0x10300000,0x258364e0,0x25840000)
      Metaspace total 39432K, used 38121K, reserved 11104K
        data space     39432K, used 38121K, reserved 11104K
      545.052: [Full GC (Ergonomics) [PSYoungGen: 58624K->0K(116736K)] [ParOldGen: 349401K->38999K(276992K)] 408025K->38999K(393728K), [Metaspace: 38121K->38111K(11104K)], 0.2856262 secs] [Times: user=0.45 sys=0.00, real=0.29 secs]
      Heap after GC invocations=25 (full 11):
      PSYoungGen      total 116736K, used 0K [0x25840000, 0x30300000, 0x30300000)
        eden space 58624K, 0% used [0x25840000,0x25840000,0x29180000)
        from space 58112K, 0% used [0x2ca40000,0x2ca40000,0x30300000)
        to   space 58112K, 0% used [0x29180000,0x29180000,0x2ca40000)
      ParOldGen       total 276992K, used 38999K [0x10300000, 0x21180000, 0x25840000)
        object space 276992K, 14% used [0x10300000,0x12915c00,0x21180000)
      Metaspace total 39418K, used 38111K, reserved 11104K
        data space     39418K, used 38111K, reserved 11104K
      }

       

      To have something to compare switching CF10 back to Java 7 with no other JVM alterations verbose log portion for similar usage says:

       

      {Heap before GC invocations=24 (full 9):
      PSYoungGen      total 116480K, used 65026K [0x1d360000, 0x27e00000, 0x27e00000)
        eden space 58240K, 100% used [0x1d360000,0x20c40000,0x20c40000)
        from space 58240K, 11% used [0x24520000,0x24bc09b8,0x27e00000)
        to   space 58240K, 0% used [0x20c40000,0x20c40000,0x24520000)
      PSOldGen        total 205184K, used 35647K [0x07e00000, 0x14660000, 0x1d360000)
        object space 205184K, 17% used [0x07e00000,0x0a0cfc90,0x14660000)
      PSPermGen       total 58880K, used 45819K [0x03e00000, 0x07780000, 0x07e00000)
        object space 58880K, 77% used [0x03e00000,0x06abec70,0x07780000)
      530.568: [GC [PSYoungGen: 65026K->5223K(116480K)] 100673K->45573K(321664K), 0.0220773 secs] [Times: user=0.05 sys=0.00, real=0.02 secs]
      Heap after GC invocations=24 (full 9):
      PSYoungGen      total 116480K, used 5223K [0x1d360000, 0x27e00000, 0x27e00000)
        eden space 58240K, 0% used [0x1d360000,0x1d360000,0x20c40000)
        from space 58240K, 8% used [0x20c40000,0x21159d78,0x24520000)
        to   space 58240K, 0% used [0x24520000,0x24520000,0x27e00000)
      PSOldGen        total 205184K, used 40350K [0x07e00000, 0x14660000, 0x1d360000)
        object space 205184K, 19% used [0x07e00000,0x0a567a60,0x14660000)
      PSPermGen       total 58880K, used 45819K [0x03e00000, 0x07780000, 0x07e00000)
        object space 58880K, 77% used [0x03e00000,0x06abec70,0x07780000)
      }

       

      I should add Java 8 is preview and not officially support by Adobe CF so do not install it on your CF production or any environment that you rely on.

       

      Java 8 release is expected March 2014. That might seem a long way off but like the previous Java 7 release can creep up on you rather quickly.

       

      Regards, Carl.