1420 _cg1r = new ConcurrentG1Refine(); |
1420 _cg1r = new ConcurrentG1Refine(); |
1421 |
1421 |
1422 // Reserve the maximum. |
1422 // Reserve the maximum. |
1423 PermanentGenerationSpec* pgs = collector_policy()->permanent_generation(); |
1423 PermanentGenerationSpec* pgs = collector_policy()->permanent_generation(); |
1424 // Includes the perm-gen. |
1424 // Includes the perm-gen. |
|
1425 |
|
1426 const size_t total_reserved = max_byte_size + pgs->max_size(); |
|
1427 char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop); |
|
1428 |
1425 ReservedSpace heap_rs(max_byte_size + pgs->max_size(), |
1429 ReservedSpace heap_rs(max_byte_size + pgs->max_size(), |
1426 HeapRegion::GrainBytes, |
1430 HeapRegion::GrainBytes, |
1427 false /*ism*/); |
1431 false /*ism*/, addr); |
|
1432 |
|
1433 if (UseCompressedOops) { |
|
1434 if (addr != NULL && !heap_rs.is_reserved()) { |
|
1435 // Failed to reserve at specified address - the requested memory |
|
1436 // region is taken already, for example, by 'java' launcher. |
|
1437 // Try again to reserver heap higher. |
|
1438 addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop); |
|
1439 ReservedSpace heap_rs0(total_reserved, HeapRegion::GrainBytes, |
|
1440 false /*ism*/, addr); |
|
1441 if (addr != NULL && !heap_rs0.is_reserved()) { |
|
1442 // Failed to reserve at specified address again - give up. |
|
1443 addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop); |
|
1444 assert(addr == NULL, ""); |
|
1445 ReservedSpace heap_rs1(total_reserved, HeapRegion::GrainBytes, |
|
1446 false /*ism*/, addr); |
|
1447 heap_rs = heap_rs1; |
|
1448 } else { |
|
1449 heap_rs = heap_rs0; |
|
1450 } |
|
1451 } |
|
1452 } |
1428 |
1453 |
1429 if (!heap_rs.is_reserved()) { |
1454 if (!heap_rs.is_reserved()) { |
1430 vm_exit_during_initialization("Could not reserve enough space for object heap"); |
1455 vm_exit_during_initialization("Could not reserve enough space for object heap"); |
1431 return JNI_ENOMEM; |
1456 return JNI_ENOMEM; |
1432 } |
1457 } |