< prev index next >

src/share/vm/memory/universe.cpp

Print this page




  65 #include "runtime/init.hpp"
  66 #include "runtime/java.hpp"
  67 #include "runtime/javaCalls.hpp"
  68 #include "runtime/sharedRuntime.hpp"
  69 #include "runtime/synchronizer.hpp"
  70 #include "runtime/thread.inline.hpp"
  71 #include "runtime/timerTrace.hpp"
  72 #include "runtime/vm_operations.hpp"
  73 #include "services/memoryService.hpp"
  74 #include "utilities/copy.hpp"
  75 #include "utilities/events.hpp"
  76 #include "utilities/hashtable.inline.hpp"
  77 #include "utilities/macros.hpp"
  78 #include "utilities/ostream.hpp"
  79 #include "utilities/preserveException.hpp"
  80 #if INCLUDE_ALL_GCS
  81 #include "gc/cms/cmsCollectorPolicy.hpp"
  82 #include "gc/g1/g1CollectedHeap.inline.hpp"
  83 #include "gc/g1/g1CollectorPolicy.hpp"
  84 #include "gc/parallel/parallelScavengeHeap.hpp"


  85 #include "gc/shared/adaptiveSizePolicy.hpp"
  86 #endif // INCLUDE_ALL_GCS
  87 #if INCLUDE_CDS
  88 #include "classfile/sharedClassUtil.hpp"
  89 #endif
  90 
  91 // Known objects
  92 Klass* Universe::_boolArrayKlassObj                 = NULL;
  93 Klass* Universe::_byteArrayKlassObj                 = NULL;
  94 Klass* Universe::_charArrayKlassObj                 = NULL;
  95 Klass* Universe::_intArrayKlassObj                  = NULL;
  96 Klass* Universe::_shortArrayKlassObj                = NULL;
  97 Klass* Universe::_longArrayKlassObj                 = NULL;
  98 Klass* Universe::_singleArrayKlassObj               = NULL;
  99 Klass* Universe::_doubleArrayKlassObj               = NULL;
 100 Klass* Universe::_typeArrayKlassObjs[T_VOID+1]      = { NULL /*, NULL...*/ };
 101 Klass* Universe::_objectArrayKlassObj               = NULL;
 102 oop Universe::_int_mirror                             = NULL;
 103 oop Universe::_float_mirror                           = NULL;
 104 oop Universe::_double_mirror                          = NULL;


 716 
 717 CollectedHeap* Universe::create_heap() {
 718   assert(_collectedHeap == NULL, "Heap already created");
 719 #if !INCLUDE_ALL_GCS
 720   if (UseParallelGC) {
 721     fatal("UseParallelGC not supported in this VM.");
 722   } else if (UseG1GC) {
 723     fatal("UseG1GC not supported in this VM.");
 724   } else if (UseConcMarkSweepGC) {
 725     fatal("UseConcMarkSweepGC not supported in this VM.");
 726 #else
 727   if (UseParallelGC) {
 728     return Universe::create_heap_with_policy<ParallelScavengeHeap, GenerationSizer>();
 729   } else if (UseG1GC) {
 730     return Universe::create_heap_with_policy<G1CollectedHeap, G1CollectorPolicy>();
 731   } else if (UseConcMarkSweepGC) {
 732     return Universe::create_heap_with_policy<GenCollectedHeap, ConcurrentMarkSweepPolicy>();
 733 #endif
 734   } else if (UseSerialGC) {
 735     return Universe::create_heap_with_policy<GenCollectedHeap, MarkSweepPolicy>();


 736   }
 737 
 738   ShouldNotReachHere();
 739   return NULL;
 740 }
 741 
 742 // Choose the heap base address and oop encoding mode
 743 // when compressed oops are used:
 744 // Unscaled  - Use 32-bits oops without encoding when
 745 //     NarrowOopHeapBaseMin + heap_size < 4Gb
 746 // ZeroBased - Use zero based compressed oops with encoding when
 747 //     NarrowOopHeapBaseMin + heap_size < 32Gb
 748 // HeapBased - Use compressed oops with heap base + encoding.
 749 
 750 jint Universe::initialize_heap() {
 751   jint status = JNI_ERR;
 752 
 753   _collectedHeap = create_heap_ext();
 754   if (_collectedHeap == NULL) {
 755     _collectedHeap = create_heap();




  65 #include "runtime/init.hpp"
  66 #include "runtime/java.hpp"
  67 #include "runtime/javaCalls.hpp"
  68 #include "runtime/sharedRuntime.hpp"
  69 #include "runtime/synchronizer.hpp"
  70 #include "runtime/thread.inline.hpp"
  71 #include "runtime/timerTrace.hpp"
  72 #include "runtime/vm_operations.hpp"
  73 #include "services/memoryService.hpp"
  74 #include "utilities/copy.hpp"
  75 #include "utilities/events.hpp"
  76 #include "utilities/hashtable.inline.hpp"
  77 #include "utilities/macros.hpp"
  78 #include "utilities/ostream.hpp"
  79 #include "utilities/preserveException.hpp"
  80 #if INCLUDE_ALL_GCS
  81 #include "gc/cms/cmsCollectorPolicy.hpp"
  82 #include "gc/g1/g1CollectedHeap.inline.hpp"
  83 #include "gc/g1/g1CollectorPolicy.hpp"
  84 #include "gc/parallel/parallelScavengeHeap.hpp"
  85 #include "gc/epsilon/epsilonCollectedHeap.hpp"
  86 #include "gc/epsilon/epsilonCollectorPolicy.hpp"
  87 #include "gc/shared/adaptiveSizePolicy.hpp"
  88 #endif // INCLUDE_ALL_GCS
  89 #if INCLUDE_CDS
  90 #include "classfile/sharedClassUtil.hpp"
  91 #endif
  92 
  93 // Known objects
  94 Klass* Universe::_boolArrayKlassObj                 = NULL;
  95 Klass* Universe::_byteArrayKlassObj                 = NULL;
  96 Klass* Universe::_charArrayKlassObj                 = NULL;
  97 Klass* Universe::_intArrayKlassObj                  = NULL;
  98 Klass* Universe::_shortArrayKlassObj                = NULL;
  99 Klass* Universe::_longArrayKlassObj                 = NULL;
 100 Klass* Universe::_singleArrayKlassObj               = NULL;
 101 Klass* Universe::_doubleArrayKlassObj               = NULL;
 102 Klass* Universe::_typeArrayKlassObjs[T_VOID+1]      = { NULL /*, NULL...*/ };
 103 Klass* Universe::_objectArrayKlassObj               = NULL;
 104 oop Universe::_int_mirror                             = NULL;
 105 oop Universe::_float_mirror                           = NULL;
 106 oop Universe::_double_mirror                          = NULL;


 718 
 719 CollectedHeap* Universe::create_heap() {
 720   assert(_collectedHeap == NULL, "Heap already created");
 721 #if !INCLUDE_ALL_GCS
 722   if (UseParallelGC) {
 723     fatal("UseParallelGC not supported in this VM.");
 724   } else if (UseG1GC) {
 725     fatal("UseG1GC not supported in this VM.");
 726   } else if (UseConcMarkSweepGC) {
 727     fatal("UseConcMarkSweepGC not supported in this VM.");
 728 #else
 729   if (UseParallelGC) {
 730     return Universe::create_heap_with_policy<ParallelScavengeHeap, GenerationSizer>();
 731   } else if (UseG1GC) {
 732     return Universe::create_heap_with_policy<G1CollectedHeap, G1CollectorPolicy>();
 733   } else if (UseConcMarkSweepGC) {
 734     return Universe::create_heap_with_policy<GenCollectedHeap, ConcurrentMarkSweepPolicy>();
 735 #endif
 736   } else if (UseSerialGC) {
 737     return Universe::create_heap_with_policy<GenCollectedHeap, MarkSweepPolicy>();
 738   } else if (UseEpsilonGC) {
 739     return Universe::create_heap_with_policy<EpsilonCollectedHeap, EpsilonCollectorPolicy>();
 740   }
 741 
 742   ShouldNotReachHere();
 743   return NULL;
 744 }
 745 
 746 // Choose the heap base address and oop encoding mode
 747 // when compressed oops are used:
 748 // Unscaled  - Use 32-bits oops without encoding when
 749 //     NarrowOopHeapBaseMin + heap_size < 4Gb
 750 // ZeroBased - Use zero based compressed oops with encoding when
 751 //     NarrowOopHeapBaseMin + heap_size < 32Gb
 752 // HeapBased - Use compressed oops with heap base + encoding.
 753 
 754 jint Universe::initialize_heap() {
 755   jint status = JNI_ERR;
 756 
 757   _collectedHeap = create_heap_ext();
 758   if (_collectedHeap == NULL) {
 759     _collectedHeap = create_heap();


< prev index next >