Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.lang.management.ManagementFactory;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.function.Function;
- import java.util.function.Supplier;
- import java.util.stream.IntStream;
- import com.sun.management.ThreadMXBean;
- public class Main {
- private final static ThreadMXBean threadMgmt = getSunThreadMxBean();
- public static long getMemoryAllocated(Thread thread) {
- if (threadMgmt == null) {
- return -1;
- } else {
- return threadMgmt.getThreadAllocatedBytes(thread.getId());
- }
- }
- private static ThreadMXBean getSunThreadMxBean() {
- try {
- // original bean is from j.l.m package (interface), but actually it's Sun's extension
- return (ThreadMXBean) ManagementFactory.getThreadMXBean();
- } catch (ClassCastException fail) {
- return null;
- }
- }
- public static void main(String[] args) throws IOException, InterruptedException {
- Thread.sleep(10_000);
- System.out.println(getMemoryAllocated(Thread.currentThread()));
- int[] ints = IntStream.range(0, Integer.MAX_VALUE >> 1).toArray();
- System.out.println(ints.length);
- System.out.println(getMemoryAllocated(Thread.currentThread()));
- ints = null;
- System.gc();
- System.out.println(getMemoryAllocated(Thread.currentThread()));
- Thread.sleep(10_000);
- String s = "";
- for (int i = 0; i < 10_000; i++) {
- s += i;
- }
- System.out.println(getMemoryAllocated(Thread.currentThread()));
- System.out.println(s);
- System.out.println(getMemoryAllocated(Thread.currentThread()));
- }
- }
Add Comment
Please, Sign In to add comment