1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
| public class WhiteBox { public native long getCompressedOopsMaxHeapSize(); public native void printHeapSizes();
public native long getObjectAddress(Object o); public native int getHeapOopSize(); public native int getVMPageSize(); public native long getVMLargePageSize();
public native boolean isObjectInOldGen(Object o); public native long getObjectSize(Object o);
public boolean isClassAlive(String name); public native boolean isMonitorInflated(Object obj); public native void forceSafepoint();
public native boolean classKnownToNotExist(ClassLoader loader, String name); public native URL[] getLookupCacheURLs(ClassLoader loader); public native int[] getLookupCacheMatches(ClassLoader loader, String name);
public native void addToBootstrapClassLoaderSearch(String segment); public native void addToSystemClassLoaderSearch(String segment);
public native boolean g1InConcurrentMark(); public native boolean g1IsHumongous(Object o); public native long g1NumMaxRegions(); public native long g1NumFreeRegions(); public native int g1RegionSize(); public native MemoryUsage g1AuxiliaryMemoryUsage(); public native Object[] parseCommandLine(String commandline, DiagnosticCommand[] args);
public native long NMTMalloc(long size); public native void NMTFree(long mem); public native long NMTReserveMemory(long size); public native void NMTCommitMemory(long addr, long size); public native void NMTUncommitMemory(long addr, long size); public native void NMTReleaseMemory(long addr, long size); public native long NMTMallocWithPseudoStack(long size, int index); public native boolean NMTIsDetailSupported(); public native boolean NMTChangeTrackingLevel(); public native int NMTGetHashSize();
public native void deoptimizeAll(); public boolean isMethodCompiled(Executable method) { return isMethodCompiled(method, false ); } public native boolean isMethodCompiled(Executable method, boolean isOsr); public boolean isMethodCompilable(Executable method) { return isMethodCompilable(method, -1 ); } public boolean isMethodCompilable(Executable method, int compLevel) { return isMethodCompilable(method, compLevel, false ); } public native boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr); public native boolean isMethodQueuedForCompilation(Executable method); public int deoptimizeMethod(Executable method) { return deoptimizeMethod(method, false ); } public native int deoptimizeMethod(Executable method, boolean isOsr); public void makeMethodNotCompilable(Executable method) { makeMethodNotCompilable(method, -1 ); } public void makeMethodNotCompilable(Executable method, int compLevel) { makeMethodNotCompilable(method, compLevel, false ); } public native void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr); public int getMethodCompilationLevel(Executable method) { return getMethodCompilationLevel(method, false ); } public native int getMethodCompilationLevel(Executable method, boolean isOsr); public native boolean testSetDontInlineMethod(Executable method, boolean value); public int getCompileQueuesSize() { return getCompileQueueSize(-1 ); } public native int getCompileQueueSize(int compLevel); public native boolean testSetForceInlineMethod(Executable method, boolean value); public boolean enqueueMethodForCompilation(Executable method, int compLevel) { return enqueueMethodForCompilation(method, compLevel, -1 ); } public native boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci); public native void clearMethodState(Executable method); public native int getMethodEntryBci(Executable method); public native Object[] getNMethod(Executable method, boolean isOsr);
public native boolean isInStringTable(String str);
public native void readReservedMemory(); public native long allocateMetaspace(ClassLoader classLoader, long size); public native void freeMetaspace(ClassLoader classLoader, long addr, long size); public native long incMetaspaceCapacityUntilGC(long increment); public native long metaspaceCapacityUntilGC();
public native void youngGC();
public native void fullGC();
public native int stressVirtualSpaceResize(long reservedSpaceSize, long magnitude, long iterations); public native void runMemoryUnitTests(); public native void readFromNoaccessArea(); public native long getThreadStackSize(); public native long getThreadRemainingStackSize();
public native String getCPUFeatures();
public native long getHeapUsageForContext(int context); public native long getHeapRegionCountForContext(int context); public native int getContextForObject(Object obj); public native void printRegionInfo(int context);
public native void setBooleanVMFlag(String name, boolean value); public native void setIntxVMFlag(String name, long value); public native void setUintxVMFlag(String name, long value); public native void setUint64VMFlag(String name, long value); public native void setStringVMFlag(String name, String value); public native void setDoubleVMFlag(String name, double value); public native Boolean getBooleanVMFlag(String name); public native Long getIntxVMFlag(String name); public native Long getUintxVMFlag(String name); public native Long getUint64VMFlag(String name); public native String getStringVMFlag(String name); public native Double getDoubleVMFlag(String name); private final List<Function<String,Object>> flagsGetters = Arrays.asList( this::getBooleanVMFlag, this::getIntxVMFlag, this::getUintxVMFlag, this::getUint64VMFlag, this::getStringVMFlag, this::getDoubleVMFlag);
public Object getVMFlag(String name) { return flagsGetters.stream() .map(f -> f.apply(name)) .filter(x -> x != null) .findAny() .orElse(null); } public native int getOffsetForName0(String name); public int getOffsetForName(String name) throws Exception { int offset = getOffsetForName0(name); if (offset == -1) { throw new RuntimeException(name + " not found"); } return offset; } }
|