RFR: 8000617: It should be possible to allocate memory without the VM dying.

David Holmes david.holmes at oracle.com
Wed Oct 17 04:25:14 PDT 2012


On 17/10/2012 9:11 PM, Nils Loodin wrote:
>> Ummm there is tracing of the malloc calls:
>>
>> 94 void* p = os::malloc(size, F, (caller_pc != 0 ? caller_pc :
>> CALLER_PC));
>>
>> 95 if (PrintMallocFree) trace_heap_malloc(size, "CHeapObj-new", p);
>
>
> That was from allocation.inline.hpp and is hidden behind an #ifdef
> ASSERT. the #elseif is

Yes but that was the file I was referring to.

>
> return os::malloc(size, F, (caller_pc != 0 ? caller_pc : CALLER_PC)); ..

And the tracing in AllocateHeap is also guarded by #ifdef ASSERT

  50 // allocate using malloc; will fail if no memory available
   51 inline char* AllocateHeap(size_t size, MEMFLAGS flags, address pc = 0,
   52     AllocFailType alloc_failmode = AllocFailStrategy::EXIT_OOM) {
   53   if (pc == 0) {
   54     pc = CURRENT_PC;
   55   }
   56   char* p = (char*) os::malloc(size, flags, pc);
   57   #ifdef ASSERT
   58   if (PrintMallocFree) trace_heap_malloc(size, "AllocateHeap", p);
   59   #endif

PrintMallocFree in a notProduct flag.

> Also in thread.cpp there is no tracing, just an os:malloc:

And I made no comment in regard to tracing for that file.

David
-----

> return throw_excpt? AllocateHeap(size, flags, CURRENT_PC)
> - : os::malloc(size, flags, CURRENT_PC);
> + : AllocateHeap(size, flags, CURRENT_PC,
> AllocFailStrategy::RETURN_NULL);
>
> So I wouldn't say that these os::malloc calls contain tracing...
> Regards,
> Nils Loodin


More information about the hotspot-dev mailing list