51 static volatile jlong _deallocated_bytes = 0; |
51 static volatile jlong _deallocated_bytes = 0; |
52 static volatile jlong _live_set_bytes = 0; |
52 static volatile jlong _live_set_bytes = 0; |
53 |
53 |
54 static void add(size_t alloc_size) { |
54 static void add(size_t alloc_size) { |
55 if (!JfrRecorder::is_created()) { |
55 if (!JfrRecorder::is_created()) { |
56 const jlong total_allocated = atomic_add_jlong(alloc_size, &_allocated_bytes); |
56 const jlong total_allocated = atomic_add_jlong((jlong)alloc_size, &_allocated_bytes); |
57 const jlong current_live_set = atomic_add_jlong(alloc_size, &_live_set_bytes); |
57 const jlong current_live_set = atomic_add_jlong((jlong)alloc_size, &_live_set_bytes); |
58 log_trace(jfr, system)("Allocation: [" SIZE_FORMAT "] bytes", alloc_size); |
58 log_trace(jfr, system)("Allocation: [" SIZE_FORMAT "] bytes", alloc_size); |
59 log_trace(jfr, system)("Total alloc [" JLONG_FORMAT "] bytes", total_allocated); |
59 log_trace(jfr, system)("Total alloc [" JLONG_FORMAT "] bytes", total_allocated); |
60 log_trace(jfr, system)("Liveset: [" JLONG_FORMAT "] bytes", current_live_set); |
60 log_trace(jfr, system)("Liveset: [" JLONG_FORMAT "] bytes", current_live_set); |
61 } |
61 } |
62 } |
62 } |
63 |
63 |
64 static void subtract(size_t dealloc_size) { |
64 static void subtract(size_t dealloc_size) { |
65 if (!JfrRecorder::is_created()) { |
65 if (!JfrRecorder::is_created()) { |
66 const size_t total_deallocated = atomic_add_jlong(dealloc_size, &_deallocated_bytes); |
66 const jlong total_deallocated = atomic_add_jlong((jlong)dealloc_size, &_deallocated_bytes); |
67 const size_t current_live_set = atomic_add_jlong(dealloc_size * -1, &_live_set_bytes); |
67 const jlong current_live_set = atomic_add_jlong(((jlong)dealloc_size * -1), &_live_set_bytes); |
68 log_trace(jfr, system)("Deallocation: [" SIZE_FORMAT "] bytes", dealloc_size); |
68 log_trace(jfr, system)("Deallocation: [" SIZE_FORMAT "] bytes", dealloc_size); |
69 log_trace(jfr, system)("Total dealloc [" SIZE_FORMAT "] bytes", total_deallocated); |
69 log_trace(jfr, system)("Total dealloc [" JLONG_FORMAT "] bytes", total_deallocated); |
70 log_trace(jfr, system)("Liveset: [" SIZE_FORMAT "] bytes", current_live_set); |
70 log_trace(jfr, system)("Liveset: [" JLONG_FORMAT "] bytes", current_live_set); |
71 } |
71 } |
72 } |
72 } |
73 |
73 |
74 static void hook_memory_deallocation(size_t dealloc_size) { |
74 static void hook_memory_deallocation(size_t dealloc_size) { |
75 subtract(dealloc_size); |
75 subtract(dealloc_size); |