< prev index next >

test/gc/TestSmallHeap.java

Print this page




  40 
  41 /* Note: It would be nice to verify the minimal supported heap size (2m) here,
  42  * but we align the heap size based on the card table size. And the card table
  43  * size is aligned based on the minimal pages size provided by the os. This
  44  * means that on most platforms, where the minimal page size is 4k, we get a
  45  * minimal heap size of 2m but on Solaris/Sparc we have a page size of 8k and
  46  * get a minimal heap size of 4m. And on platforms where the page size is 64k
  47  * we get a minimal heap size of 32m. We never use large pages for the card table.
  48  *
  49  * There is also no check in the VM for verifying that the maximum heap size
  50  * is larger than the supported minimal heap size. This means that specifying
  51  * -Xmx1m on the command line is fine but will give a heap of 2m (or 4m or 32m).
  52  *
  53  * To work around these rather strange behaviors this test uses -Xmx2m but then
  54  * calculates what the expected heap size should be. The calculation is a
  55  * simplified version of the code in the VM. We assume that the card table will
  56  * use one page. Each byte in the card table corresponds to 512 bytes on the heap.
  57  * So, the expected heap size is page_size * 512.
  58  */
  59 
  60 import com.oracle.java.testlibrary.*;
  61 import com.sun.management.HotSpotDiagnosticMXBean;
  62 import java.lang.management.ManagementFactory;
  63 import static com.oracle.java.testlibrary.Asserts.*;
  64 
  65 import sun.hotspot.WhiteBox;
  66 
  67 public class TestSmallHeap {
  68 
  69     public static void main(String[] args) {
  70         WhiteBox wb = WhiteBox.getWhiteBox();
  71         int pageSize = wb.getVMPageSize();
  72         int heapBytesPerCard = 512;
  73         long expectedMaxHeap = pageSize * heapBytesPerCard;
  74         String maxHeap
  75             = ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class)
  76                 .getVMOption("MaxHeapSize").getValue();
  77         assertEQ(Long.parseLong(maxHeap), expectedMaxHeap);
  78     }
  79 }


  40 
  41 /* Note: It would be nice to verify the minimal supported heap size (2m) here,
  42  * but we align the heap size based on the card table size. And the card table
  43  * size is aligned based on the minimal pages size provided by the os. This
  44  * means that on most platforms, where the minimal page size is 4k, we get a
  45  * minimal heap size of 2m but on Solaris/Sparc we have a page size of 8k and
  46  * get a minimal heap size of 4m. And on platforms where the page size is 64k
  47  * we get a minimal heap size of 32m. We never use large pages for the card table.
  48  *
  49  * There is also no check in the VM for verifying that the maximum heap size
  50  * is larger than the supported minimal heap size. This means that specifying
  51  * -Xmx1m on the command line is fine but will give a heap of 2m (or 4m or 32m).
  52  *
  53  * To work around these rather strange behaviors this test uses -Xmx2m but then
  54  * calculates what the expected heap size should be. The calculation is a
  55  * simplified version of the code in the VM. We assume that the card table will
  56  * use one page. Each byte in the card table corresponds to 512 bytes on the heap.
  57  * So, the expected heap size is page_size * 512.
  58  */
  59 
  60 import jdk.test.lib.*;
  61 import com.sun.management.HotSpotDiagnosticMXBean;
  62 import java.lang.management.ManagementFactory;
  63 import static jdk.test.lib.Asserts.*;
  64 
  65 import sun.hotspot.WhiteBox;
  66 
  67 public class TestSmallHeap {
  68 
  69     public static void main(String[] args) {
  70         WhiteBox wb = WhiteBox.getWhiteBox();
  71         int pageSize = wb.getVMPageSize();
  72         int heapBytesPerCard = 512;
  73         long expectedMaxHeap = pageSize * heapBytesPerCard;
  74         String maxHeap
  75             = ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class)
  76                 .getVMOption("MaxHeapSize").getValue();
  77         assertEQ(Long.parseLong(maxHeap), expectedMaxHeap);
  78     }
  79 }
< prev index next >