Hi guys,
I have a need to check memory allocations in our Java server per Thread.
For that purpose I modified slightly the Async Profiler
<https://github.com/jvm-profiling-tools/async-profiler> tool. As we can see
in allocTracer.cpp
<https://github.com/jvm-profiling-tools/async-profiler/blob/master/src/allocTracer.cpp>
file,
it registers for those two events - send_allocation_outside_tlab_event
<https://github.com/jvm-profiling-tools/async-profiler/blob/master/src/allocTracer.cpp#L26>
and send_allocation_outside_tlab_event
<https://github.com/jvm-profiling-tools/async-profiler/blob/master/src/allocTracer.cpp#L27>
. Now, in my Java app I did some simple testings with
allocationStart1 =
AsyncProfiler.getInstance().getAndZeroTotalAllocationsPerThread()
ArrayList aa = new ArrayList();
for (int i = 0; i < 14000; i++) {
aa.add(RandomStringUtils.randomAlphanumeric(100));
}
allocationsEnd1 = AsyncProfiler.getInstance().
getAndZeroTotalAllocationsPerThread();
getAndZeroTotalAllocationsPerThread is my adding to AsyncProfiler JNI,
approximately returning the memory calculated by
static __thread u64 _total_counter_per_thread;
..
void Profiler::recordSample(void* ucontext, u64 counter, jint event_type,
jmethodID event) {
_total_counter_per_thread += counter;
}
This code replaces original Profiler::recordSample
<https://github.com/jvm-profiling-tools/async-profiler/blob/master/src/profiler.cpp#L278>
method.
Now, since we are talking about TLAB and not just an event that fires on
every memory allocation, this memory is not straightforward. If I make "aa"
to be "static" than it's much more predictable since it actually grows and
takes more and more TLABs.
So my question is basically whether this approach is feasible in your
opinion? Or, because those events will fire only when objects are allocated
outside of TLAB/in new TLAB, I won't have anything useful from it?
--
You received this message because you are subscribed to the Google Groups
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.