Guest User

Untitled

a guest
Mar 23rd, 2016
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.IOException;
  2. import java.lang.management.ManagementFactory;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.function.Function;
  6. import java.util.function.Supplier;
  7. import java.util.stream.IntStream;
  8. import com.sun.management.ThreadMXBean;
  9.  
  10.  
  11. public class Main {
  12.     private final static ThreadMXBean threadMgmt = getSunThreadMxBean();
  13.  
  14.     public static long getMemoryAllocated(Thread thread) {
  15.         if (threadMgmt == null) {
  16.             return -1;
  17.         } else {
  18.             return threadMgmt.getThreadAllocatedBytes(thread.getId());
  19.         }
  20.     }
  21.  
  22.     private static ThreadMXBean getSunThreadMxBean() {
  23.         try {
  24.             // original bean is from j.l.m package (interface), but actually it's Sun's extension
  25.             return (ThreadMXBean) ManagementFactory.getThreadMXBean();
  26.         } catch (ClassCastException fail) {
  27.             return null;
  28.         }
  29.     }
  30.  
  31.     public static void main(String[] args) throws IOException, InterruptedException {
  32.         Thread.sleep(10_000);
  33.         System.out.println(getMemoryAllocated(Thread.currentThread()));
  34.         int[] ints = IntStream.range(0, Integer.MAX_VALUE >> 1).toArray();
  35.         System.out.println(ints.length);
  36.         System.out.println(getMemoryAllocated(Thread.currentThread()));
  37.         ints = null;
  38.         System.gc();
  39.         System.out.println(getMemoryAllocated(Thread.currentThread()));
  40.         Thread.sleep(10_000);
  41.         String s = "";
  42.         for (int i = 0; i < 10_000; i++) {
  43.             s += i;
  44.         }
  45.         System.out.println(getMemoryAllocated(Thread.currentThread()));
  46.         System.out.println(s);
  47.         System.out.println(getMemoryAllocated(Thread.currentThread()));
  48.     }
  49. }
Add Comment
Please, Sign In to add comment