diff a/src/hotspot/os/solaris/os_perf_solaris.cpp b/src/hotspot/os/solaris/os_perf_solaris.cpp --- a/src/hotspot/os/solaris/os_perf_solaris.cpp +++ b/src/hotspot/os/solaris/os_perf_solaris.cpp @@ -298,16 +298,16 @@ if (_counters.nProcs == 0) { return false; } // Data structure(s) for saving CPU load (one per CPU) - size_t tick_array_size = _counters.nProcs * sizeof(CPUPerfTicks); - _counters.jvmTicks = (CPUPerfTicks*)NEW_C_HEAP_ARRAY(char, tick_array_size, mtInternal); + size_t array_entry_count = _counters.nProcs; + _counters.jvmTicks = NEW_C_HEAP_ARRAY(CPUPerfTicks, array_entry_count, mtInternal); if (NULL == _counters.jvmTicks) { return false; } - memset(_counters.jvmTicks, 0, tick_array_size); + memset(_counters.jvmTicks, 0, array_entry_count * sizeof(*_counters.jvmTicks)); // Get kstat cpu_stat counters for every CPU // loop over kstat to find our cpu_stat(s) int i = 0; for (kstat_t* kstat = _counters.kstat_ctrl->kc_chain; kstat != NULL; kstat = kstat->ks_next) {