1782 HeapWord* end = _hrm->reserved().end();
1783 size_t granularity = HeapRegion::GrainBytes;
1784
1785 _region_attr.initialize(start, end, granularity);
1786 _humongous_reclaim_candidates.initialize(start, end, granularity);
1787 }
1788
1789 _workers = new WorkGang("GC Thread", ParallelGCThreads,
1790 true /* are_GC_task_threads */,
1791 false /* are_ConcurrentGC_threads */);
1792 if (_workers == NULL) {
1793 return JNI_ENOMEM;
1794 }
1795 _workers->initialize_workers();
1796
1797 _numa->set_region_info(HeapRegion::GrainBytes, page_size);
1798
1799 // Create the G1ConcurrentMark data structure and thread.
1800 // (Must do this late, so that "max_regions" is defined.)
1801 _cm = new G1ConcurrentMark(this, prev_bitmap_storage, next_bitmap_storage);
1802 if (_cm == NULL || !_cm->completed_initialization()) {
1803 vm_shutdown_during_initialization("Could not create/initialize G1ConcurrentMark");
1804 return JNI_ENOMEM;
1805 }
1806 _cm_thread = _cm->cm_thread();
1807
1808 // Now expand into the initial heap size.
1809 if (!expand(init_byte_size, _workers)) {
1810 vm_shutdown_during_initialization("Failed to allocate initial heap.");
1811 return JNI_ENOMEM;
1812 }
1813
1814 // Perform any initialization actions delegated to the policy.
1815 policy()->init(this, &_collection_set);
1816
1817 jint ecode = initialize_concurrent_refinement();
1818 if (ecode != JNI_OK) {
1819 return ecode;
1820 }
1821
1822 ecode = initialize_young_gen_sampling_thread();
1823 if (ecode != JNI_OK) {
|
1782 HeapWord* end = _hrm->reserved().end();
1783 size_t granularity = HeapRegion::GrainBytes;
1784
1785 _region_attr.initialize(start, end, granularity);
1786 _humongous_reclaim_candidates.initialize(start, end, granularity);
1787 }
1788
1789 _workers = new WorkGang("GC Thread", ParallelGCThreads,
1790 true /* are_GC_task_threads */,
1791 false /* are_ConcurrentGC_threads */);
1792 if (_workers == NULL) {
1793 return JNI_ENOMEM;
1794 }
1795 _workers->initialize_workers();
1796
1797 _numa->set_region_info(HeapRegion::GrainBytes, page_size);
1798
1799 // Create the G1ConcurrentMark data structure and thread.
1800 // (Must do this late, so that "max_regions" is defined.)
1801 _cm = new G1ConcurrentMark(this, prev_bitmap_storage, next_bitmap_storage);
1802 if (!_cm->completed_initialization()) {
1803 vm_shutdown_during_initialization("Could not initialize G1ConcurrentMark");
1804 return JNI_ENOMEM;
1805 }
1806 _cm_thread = _cm->cm_thread();
1807
1808 // Now expand into the initial heap size.
1809 if (!expand(init_byte_size, _workers)) {
1810 vm_shutdown_during_initialization("Failed to allocate initial heap.");
1811 return JNI_ENOMEM;
1812 }
1813
1814 // Perform any initialization actions delegated to the policy.
1815 policy()->init(this, &_collection_set);
1816
1817 jint ecode = initialize_concurrent_refinement();
1818 if (ecode != JNI_OK) {
1819 return ecode;
1820 }
1821
1822 ecode = initialize_young_gen_sampling_thread();
1823 if (ecode != JNI_OK) {
|