夜深人静后的码农

一、工具介绍

如果把java\bin目录配置到环境变量,在cmd输入jmap会有如下提示:

翻译:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。

二、工具用法

jmap [ option ] pid jmap [ option ] executable core jmap [ option ] [server-id@]remote-hostname-or-IP2.1)、options:executable Java executable from which the core dump was produced.(可能是产生core dump的java可执行程序)core 将被打印信息的core dump文件remote-hostname-or-IP 远程debug服务的主机名或ipserver-id 唯一id,假如一台主机上多个远程debug服务2.2、基本参数:-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.-finalizerinfo 打印正等候回收的对象的信息.-heap 打印heap的概要信息,,GC使用的算法,heap的配置及wise heap的使用情况.-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.-h | -help 打印辅助信息-J 传递参数给jmap启动的jvm.pid 需要被打印配相信息的java进程id,创业与打工的区别 – 博文预览,可以用jps查问.

三、测试代码

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.lang.management.ManagementFactory;public class JMapStudy {public static void main(String[] args) {//Gets the currentProcess's nameString name = ManagementFactory.getRuntimeMXBean().getName();//result Format:16756@WIN–20141018KOString pid = name.split("@")[0];String command = "tasklist /fi \&;pid eq " + pid + "\&;";executeCmd(command);new JMapThread().start();command = "jmap -histo " + pid;executeCmd(command);}/** * Executes the special command by means of runtime, and output the result * to console * * @param command */public static void executeCmd(String command) {try {String s;Process process = Runtime.getRuntime().exec(command);BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(process.getInputStream()));while ((s = bufferedReader.readLine()) != null)System.out.println(s);process.waitFor();} catch (InterruptedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}class JMapThread extends Thread{/** * This method is used for creating a process to be tested memory. */public void run() {for (int i = 0; i < 10; i++) {try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("now i :" + i);}}}

四、运行结果

映像名称PID 会话名会话#内存使用 ========================= ======== ================ =========== ============javaw.exe12928 Console113,864 Know i :0now i :1now i :2 num#instances#bytes class name———————————————- 1:1518280472 [C 2:1020182192 <symbolKlass> 3:107110032 [B 4:3096184 [I 5:139833552 java.lang.String 6:25927200 <constMethodKlass> 7:77424768 java.util.TreeMap$Entry 8:25920976 <methodKlass> 9:2115344 <constantPoolKlass> 10:33214280 [Ljava.lang.Object; 11:3912792 <objArrayKlassKlass> 12:218864 <instanceKlassKlass> 13:216440 <constantPoolCacheKlass> 14:1926128 [Ljava.lang.String; 15:766080 java.lang.reflect.Method 16:605760 java.lang.Class 17:1034944 java.nio.HeapCharBuffer 18:473968 [S 19:602880 java.nio.HeapByteBuffer 20:402880 java.lang.reflect.Field 21:1152288 [Ljava.lang.Class; 22:232096 [Ljava.util.HashMap$Entry; 23:512088 [[I 24:831992 java.util.Hashtable$Entry 25:131400 [Ljava.util.Hashtable$Entry; 26:831328 java.lang.StringBuilder 27:531272 java.util.HashMap$Entry 28:321024 java.util.concurrent.ConcurrentHashMap$Segment 29:15840 java.net.URL 30:32768 java.util.concurrent.locks.ReentrantLock$NonfairSync 31:35752 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry; 32:45720 java.io.File 33:10640 java.lang.reflect.Constructor 34:16640 java.util.HashMap 35:19608 java.util.LinkedHashMap$Entry 36:19608 java.util.Locale 37:18576 java.lang.ref.Finalizer 38:36576 java.lang.ProcessEnvironment$CheckedEntry 39:5520 java.lang.Thread 40:20480 java.util.concurrent.ConcurrentHashMap$HashEntry 41:14448 java.lang.ref.SoftReference 42:7392 sun.nio.cs.ext.GBK$Decoder 43:21336 java.lang.StringBuffer 44:10320 java.io.ObjectStreamField 45:2320 [Ljava.lang.reflect.Method; 46:13312 java.io.ExpiringCache$Entry 47:13312 java.io.FileDescriptor 48:17272 sun.security.action.GetPropertyAction 49:11264 java.net.Parts 50:10240 java.security.AccessControlContext 51:5240 java.util.TreeMap 52:6240 java.util.Hashtable 53:9216 java.util.ArrayList 54:5200 sun.misc.URLClassPath$JarLoader 55:4184 [Ljava.lang.reflect.Field; 56:7168 java.util.Vector 57:3168 sun.nio.cs.ext.GBK$Encoder 58:2160 [Ljava.util.concurrent.ConcurrentHashMap$Segment; 59:4160 java.util.StringTokenizer 60:8152 [Ljava.io.ObjectStreamField; 61:3144 java.io.BufferedReader 62:9144 java.io.FileInputStream 63:4128 java.io.BufferedInputStream 64:5120 sun.reflect.NativeConstructorAccessorImpl 65:3120 sun.nio.cs.StreamDecoder 66:2112 java.io.ExpiringCache$1 67:1104 JMapThread 68:1104 java.lang.ref.Finalizer$FinalizerThread 69:13104 java.lang.Object 70:1104 java.lang.ref.Reference$ReferenceHandler 71:296 java.net.Inet6Address 72:196 sun.net. 73:296 sun.nio.cs.StreamEncoder 74:396 java.lang.ClassLoader$NativeLibrary 75:496 java.io.FileOutputStream 76:696 sun.misc.URLClassPath$3 77:296 java.lang.ThreadGroup 78:496 java.lang.OutOfMemoryError 79:296 java.util.Properties 80:296 java.util.LinkedHashMap 81:496 java.io.BufferedOutputStream 82:580 [Ljava.lang.reflect.Constructor; 83:580 java.lang.Boolean 84:580 sun.misc.MetaIndex 85:180 [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry; 86:580 sun.reflect.DelegatingConstructorAccessorImpl 87:280 java.util.concurrent.ConcurrentHashMap 88:280 java.io.BufferedWriter 89:280 java.lang.ProcessImpl 90:580 java.lang.Class$1 91:372 java.util.Stack 92:372 java.lang.RuntimePermission 93:372 java.lang.ref.WeakReference 94:372 java.lang.NoSuchMethodError 95:172 sun.misc.Launcher$AppClassLoader 96:172 sun.misc.Launcher$ExtClassLoader 97:372 sun.nio.cs.Surrogate$Parser 98:264 java.lang.ClassNotFoundException 99:264 java.io.PrintStream 100:264 sun.misc.URLClassPath$FileLoader$1 101:264 java.io.FilePermission 102:264 [Ljava.lang.Thread; 103:464 java.lang.Integer 104:264 java.security.CodeSource 105:264 java.lang.ThreadLocal$ThreadLocalMap$Entry 106:464 java.net.URLClassLoader$1 107:164 java.util.regex.Pattern 108:264 java.util.LinkedHashMap$KeyIterator 109:264 sun.misc.URLClassPath 110:264 java.security.PrivilegedActionException 111:264 java.util.LinkedList$ListItr 112:264 java.io.ExpiringCache 113:164 java.util.regex.Matcher 114:156 [Ljava.util.regex.Pattern$GroupHead; 115:356 [Ljava.io.File; 116:348 java.lang.ThreadLocal 117:248 java.lang.ref.ReferenceQueue 118:248 [Ljava.net.URL; 119:348 java.lang.ClassLoader$3 120:148 [J 121:248 java.lang.ProcessBuilder 122:348 java.nio.charset.CodingErrorAction 123:248 java.net.InetAddress$CacheEntry 124:248 java.util.LinkedList$Entry 125:248 java.security.Permissions 126:248 java.lang.ref.ReferenceQueue$Null 127:248 java.util.LinkedList 128:248 java.net.Inet4Address 129:248 java.lang.management.ManagementPermission 130:248 java.io.InputStreamReader 131:248 java.io.OutputStreamWriter 132:140 java.lang.ProcessEnvironment 133:140 sun.nio.cs.StandardCharsets$Classes 134:140 sun.nio.cs.StandardCharsets$Cache 135:140 java.util.Properties$LineReader 136:240 [Ljava.net.InetAddress; 137:540 java.lang.Class$3 138:140 sun.nio.cs.StandardCharsets$Aliases 139:132 java.security.ProtectionDomain 140:232 java.nio.charset.CoderResult 141:232 sun.security.action.LoadLibraryAction 142:132 sun.misc.SoftCache 143:232 sun.misc.Signal 144:132 sun.nio.cs.ext.ExtendedCharsets 145:232 java.lang.ProcessImpl$1 146:132 java.util.Collections$SynchronizedMap 147:232 java.nio.ByteOrder 148:432 java.lang.ref.ReferenceQueue$Lock 149:232 java.util.HashSet 150:132 [Ljava.lang.ThreadGroup; 151:232 java.net.InetAddress$Cache 152:232 java.io.FilePermission$1 153:132 java.util.RandomAccessSubList 154:232 java.net.InetAddress$Cache$Type 155:132 java.util.AbstractList$ListItr 156:232 sun.misc.NativeSignalHandler 157:132 [Ljava.lang.OutOfMemoryError; 158:132 java.util.HashMap$EntryIterator 159:132 java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl 160:432 sun.reflect.ReflectionFactory$GetReflectionFactoryAction 161:124 sun.management.VMManagementImpl 162:124 java.security.BasicPermissionCollection 163:124 java.lang.StringCoding$StringDecoder 164:124 sun.misc.Launcher$AppClassLoader$1 165:124 java.io.WinNTFileSystem 166:124 java.lang.reflect.ReflectPermission 167:124 [Ljava.net.InetAddress$Cache$Type; 168:324 sun.reflect.ReflectionFactory$1 169:124 java.util.regex.Pattern$TreeInfo 170:124 java.lang.NumberFormatException 171:124 sun.security.action.GetIntegerAction 172:124 sun.nio.cs.StandardCharsets 173:124 java.util.SubList$1 174:124 java.lang.ThreadLocal$ThreadLocalMap 175:124 sun.nio.cs.ext.GBK 176:124 java.lang.StringCoding$StringEncoder 177:124 sun.management.RuntimeImpl 178:124 java.util.BitSet 179:124 sun.net. 180:124 java.io.FileReader 181:124 java.lang.ref.Reference 182:124 java.util.Collections$UnmodifiableMap 183:116 sun.misc.Launcher$ExtClassLoader$1 184:116 [Ljava.security.Principal; 185:116 java.lang.SystemClassLoaderAction 186:116 java.security.ProtectionDomain$Key 187:116 java.security.Policy$UnsupportedEmptyCollection 188:116 java.util.HashMap$EntrySet 189:116 sun.security.action.GetBooleanAction 190:116 java.io.FilePermissionCollection 191:116 [Ljava.lang.StackTraceElement; 192:216 sun.net. 193:116 java.util.regex.Pattern$5 194:116 java.util.regex.Pattern$Start 195:116 java.util.regex.Pattern$Single 196:116 java.util.concurrent.atomic.AtomicInteger 197:116 java.util.regex.Pattern$Node 198:116 sun.misc.Launcher 199:116 sun.misc.URLClassPath$FileLoader 200:116 java.util.regex.Pattern$LastNode 201:116 java.util.HashMap$KeySet 202:116 java.util.Collections$EmptyMap 203:116 [Ljava.security.cert.Certificate; 204:116 java.nio.charset.CoderResult$1 205:116 java.lang.ProcessEnvironment$CheckedEntrySet 206:116 java.util.Collections$EmptyList 207:116 java.nio.charset.CoderResult$2 208:116 java.net.Inet6AddressImpl 209:116 sun.jkernel.DownloadManager$1 210:116 java.net.Inet4AddressImpl 211:116 [Ljava.security.ProtectionDomain; 212:116 java.lang.ProcessEnvironment$CheckedEntrySet$1 213:18 sun.net. 214:18 java.net.InetAddress$1 215:18 sun.misc.Unsafe 216:18 java.util.Collections$EmptySet 217:18 java.net.InetAddressImplFactory 218:18 java.lang.ref.Reference$Lock 219:18 java.util.Collections$ReverseComparator 220:18 sun.net.InetAddressCachePolicy$2 221:18 sun.misc.Launcher$Factory 222:18 sun.jkernel.DownloadManager$2 223:18 java.lang.ProcessEnvironment$NameComparator 224:18 java.lang.ProcessEnvironment$EntryComparator 225:18 java.util.Hashtable$EmptyEnumerator 226:18 java.lang.Compiler$1 227:18 java.lang.Terminator$1 228:18 java.nio.charset.Charset$3 229:18 java.lang.System$2 230:18 java.lang.Runtime 231:18 java.net.UnknownContentHandler 232:18 sun.misc.ASCIICaseInsensitiveComparator 233:18 java.net.URLClassLoader$7 234:18 java.lang.reflect.ReflectAccess 235:18 java.security.ProtectionDomain$2 236:18 sun.reflect.ReflectionFactory 237:18 sun.net.InetAddressCachePolicy$1 238:18 java.util.Hashtable$EmptyIterator 239:18 java.security.Security$1 240:18 java.lang.String$CaseInsensitiveComparatorTotal7599899640now i :3now i :4now i :5now i :6now i :7now i :8now i :9相关链接:

旅行,重复一个承诺和梦想,听他第二十八次提起童年往事,

夜深人静后的码农

相关文章:

你感兴趣的文章:

标签云: