diff a/src/hotspot/os/linux/os_perf_linux.cpp b/src/hotspot/os/linux/os_perf_linux.cpp --- a/src/hotspot/os/linux/os_perf_linux.cpp +++ b/src/hotspot/os/linux/os_perf_linux.cpp @@ -501,16 +501,16 @@ _counters.nProcs = os::active_processor_count(); _counters.cpus = NULL; } bool CPUPerformanceInterface::CPUPerformance::initialize() { - size_t tick_array_size = (_counters.nProcs +1) * sizeof(os::Linux::CPUPerfTicks); - _counters.cpus = (os::Linux::CPUPerfTicks*)NEW_C_HEAP_ARRAY(char, tick_array_size, mtInternal); + size_t array_entry_count = _counters.nProcs + 1; + _counters.cpus = NEW_C_HEAP_ARRAY(os::Linux::CPUPerfTicks, array_entry_count, mtInternal); if (NULL == _counters.cpus) { return false; } - memset(_counters.cpus, 0, tick_array_size); + memset(_counters.cpus, 0, array_entry_count * sizeof(*_counters.cpus)); // For the CPU load total os::Linux::get_tick_information(&_counters.cpus[_counters.nProcs], -1); // For each CPU