|  | 
| 17 | 17 | import io.nats.client.support.JsonValueUtils; | 
| 18 | 18 | 
 | 
| 19 | 19 | import java.io.PrintStream; | 
| 20 |  | -import java.lang.management.ManagementFactory; | 
| 21 |  | -import java.lang.management.MemoryMXBean; | 
| 22 |  | -import java.lang.management.MemoryUsage; | 
| 23 |  | -import java.lang.management.ThreadMXBean; | 
|  | 20 | +import java.lang.management.*; | 
| 24 | 21 | import java.util.ArrayList; | 
| 25 | 22 | import java.util.List; | 
| 26 | 23 | import java.util.Map; | 
| 27 | 24 | 
 | 
| 28 | 25 | import static io.nats.jsmulti.shared.Utils.makeId; | 
| 29 | 26 | 
 | 
| 30 | 27 | public class ProfileStats { | 
| 31 |  | -    private static final int VERSION = 1; | 
|  | 28 | +    public static final int VERSION = 1; | 
| 32 | 29 | 
 | 
| 33 |  | -    private final int version; | 
| 34 |  | -    private final String id; | 
| 35 |  | -    private String action; | 
| 36 |  | -    private String contextId; | 
|  | 30 | +    public final int version; | 
|  | 31 | +    public final String id; | 
|  | 32 | +    public String action; | 
|  | 33 | +    public String contextId; | 
| 37 | 34 | 
 | 
| 38 |  | -    private long maxMemory; | 
| 39 |  | -    private long allocatedMemory; | 
| 40 |  | -    private long freeMemory; | 
| 41 |  | -    private long heapInit; | 
| 42 |  | -    private long heapUsed; | 
| 43 |  | -    private long heapCommitted; | 
| 44 |  | -    private long heapMax; | 
| 45 |  | -    private long nonHeapInit; | 
| 46 |  | -    private long nonHeapUsed; | 
| 47 |  | -    private long nonHeapCommitted; | 
| 48 |  | -    private long nonHeapMax; | 
| 49 |  | -    private int threadCount; | 
| 50 |  | -    private final List<String> deadThreads; | 
| 51 |  | -    private final List<String> liveThreads; | 
|  | 35 | +    public final long maxMemory; | 
|  | 36 | +    public final long allocatedMemory; | 
|  | 37 | +    public final long freeMemory; | 
|  | 38 | +    public final long heapInit; | 
|  | 39 | +    public final long heapUsed; | 
|  | 40 | +    public final long heapCommitted; | 
|  | 41 | +    public final long heapMax; | 
|  | 42 | +    public final long nonHeapInit; | 
|  | 43 | +    public final long nonHeapUsed; | 
|  | 44 | +    public final long nonHeapCommitted; | 
|  | 45 | +    public final long nonHeapMax; | 
|  | 46 | +    public int threadCount; | 
|  | 47 | +    public final List<String> deadThreads; | 
|  | 48 | +    public final List<String> liveThreads; | 
| 52 | 49 | 
 | 
| 53 |  | -    private ProfileStats() { | 
|  | 50 | +    public ProfileStats(String contextId, String action) { | 
| 54 | 51 |         version = VERSION; | 
| 55 | 52 |         id = makeId(); | 
| 56 | 53 |         deadThreads = new ArrayList<>(); | 
| 57 | 54 |         liveThreads = new ArrayList<>(); | 
| 58 |  | -    } | 
| 59 | 55 | 
 | 
| 60 |  | -    public ProfileStats(String contextId, String action) { | 
| 61 |  | -        this(); | 
| 62 | 56 |         this.action = action; | 
| 63 | 57 |         this.contextId = contextId; | 
| 64 | 58 | 
 | 
| @@ -87,12 +81,15 @@ public ProfileStats(String contextId, String action) { | 
| 87 | 81 |             deadThreadIds = new long[0]; | 
| 88 | 82 |         } | 
| 89 | 83 |         for (long id : threadBean.getAllThreadIds()) { | 
| 90 |  | -            String text = "<" + id + "> " + threadBean.getThreadInfo(id).getThreadName(); | 
| 91 |  | -            if (isAlive(id, deadThreadIds)) { | 
| 92 |  | -                liveThreads.add(text); | 
| 93 |  | -            } | 
| 94 |  | -            else { | 
| 95 |  | -                deadThreads.add(text); | 
|  | 84 | +            ThreadInfo ti = threadBean.getThreadInfo(id); | 
|  | 85 | +            if (ti != null) { | 
|  | 86 | +                String text = "<" + id + "> " + ti.getThreadName(); | 
|  | 87 | +                if (isAlive(id, deadThreadIds)) { | 
|  | 88 | +                    liveThreads.add(text); | 
|  | 89 | +                } | 
|  | 90 | +                else { | 
|  | 91 | +                    deadThreads.add(text); | 
|  | 92 | +                } | 
| 96 | 93 |             } | 
| 97 | 94 |         } | 
| 98 | 95 |     } | 
| @@ -127,7 +124,6 @@ public Map<String, JsonValue> toJsonValueMap() { | 
| 127 | 124 |         for (String s : liveThreads) { | 
| 128 | 125 |             liveBuilder.add(s); | 
| 129 | 126 |         } | 
| 130 |  | - | 
| 131 | 127 |         return JsonValueUtils.mapBuilder() | 
| 132 | 128 |             .put("version", version) | 
| 133 | 129 |             .put("id", id) | 
|  | 
0 commit comments