文章目录
- 1. 介绍
- 2. 主要选项
- 3. 生成java堆转储快照 jmap -dump
- 4. 显示堆详细信息 jmap -heap pid
- 5. 显示堆中对象统计信息 jmap -histo pid
jmap(Memory Map for Java)
1. 介绍
位置:jdk\bin
作用:
-
jdk安装后会自带一些小工具,jmap命令(Memory Map for Java)是其中之一。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。
-
jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump。
-
如果不想使用jmap命令,要想获取Java堆转储快照还有一些比较“暴力”的手段:譬如在前面用过的 -XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生成dump文件,通过-XX:+HeapDumpOnCtrlBreak参数可以使用[ctrl]+[Break]键让虚拟机生成dump文件,又或者在Linux系统下通过Kill -3 命令发送进程退出信息“恐吓”一下虚拟机,也能拿到dump文件。
-
jmap的作用并不仅仅是为了获取dump文件,他还可以查询finalize执行队列,java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等。
语法:
D:\javasoft\java_soft\jdk\bin>jmap
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
<none> to print same info as Solaris pmap
-heap to print java heap summary
-histo[:live] to print histogram of java object heap; if the "live"
suboption is specified, only count live objects
-clstats to print class loader statistics
-finalizerinfo to print information on objects awaiting finalization
-dump:<dump-options> to dump java heap in hprof binary format
dump-options:
live dump only live objects; if not specified,
all objects in the heap are dumped.
format=b binary format
file=<file> dump heap to <file>
Example: jmap -dump:live,format=b,file=heap.bin <pid>
-F force. Use with -dump:<dump-options> <pid> or -histo
to force a heap dump or histogram when <pid> does not
respond. The "live" suboption is not supported
in this mode.
-h | -help to print this help message
-J<flag> to pass <flag> directly to the runtime system
2. 主要选项
选项 | 作用 |
---|---|
-dump | 生成java堆转储快照,格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活对象 |
-finalizerinfo | 显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在linux/solaris平台下有效 |
-heap | 显示堆详细信息,如使用哪种回收期、参数配置、分带状况等,只在linux/solaris平台下有效 |
-histo | 显示堆中对象统计信息,包括类、实例数量和合计容量 |
-permstat | 以ClassLoader为统计口径显示永久代内存状况,只在linux/solaris平台下有效 |
-F | 当虚拟机进程对-dump选项没有响应时,可以使用这个选项强制生成dump快照,只在linux/solaris平台下有效 |
3. 生成java堆转储快照 jmap -dump
生成java对转存快照,格式:jmap -dump:[live,]format=b,file=文件名
可以使用jdk提供的jvisualvm.exe查看hprof文件
4. 显示堆详细信息 jmap -heap pid
D:\javasoft\java_soft\jdk\bin>jmap -heap 8644
Attaching to process ID 8644, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.271-b09
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1853882368 (1768.0MB)
NewSize = 38797312 (37.0MB)
MaxNewSize = 617611264 (589.0MB)
OldSize = 78643200 (75.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 185597952 (177.0MB)
used = 1365920 (1.302642822265625MB)
free = 184232032 (175.69735717773438MB)
0.7359563967602402% used
From Space:
capacity = 16252928 (15.5MB)
used = 0 (0.0MB)
free = 16252928 (15.5MB)
0.0% used
To Space:
capacity = 18874368 (18.0MB)
used = 0 (0.0MB)
free = 18874368 (18.0MB)
0.0% used
PS Old Generation
capacity = 101187584 (96.5MB)
used = 26049224 (24.84247589111328MB)
free = 75138360 (71.65752410888672MB)
25.743498332759877% used
21147 interned Strings occupying 2233672 bytes.
5. 显示堆中对象统计信息 jmap -histo pid
显示堆中对象统计信息,包括类、实例数量和合计容量
命令格式:jmap -histo[:live]
D:\javasoft\java_soft\jdk\bin>jps -l
10048 sun.tools.jps.Jps
13072 org/netbeans/Main
16212 com.xin.demo.threaddemo.bookdemo.DeadLockDemo
8644 com.xin.demo.XinJavaDemoApplication
5560
7016 org.jetbrains.jps.cmdline.Launcher
9544 com.xin.demo.threaddemo.bookdemo.OOMTest
D:\javasoft\java_soft\jdk\bin>jmap -histo 9544
num #instances #bytes class name
----------------------------------------------
1: 1066 1822048 [B
2: 6646 978560 [C
3: 390 186216 [I
4: 6079 145896 java.lang.String
5: 722 82784 java.lang.Class
6: 1372 68968 [Ljava.lang.Object;
7: 845 33800 java.util.LinkedHashMap$Entry
8: 791 31640 java.util.TreeMap$Entry
9: 783 25056 java.util.HashMap$Node
10: 443 22376 [Ljava.lang.String;
11: 305 19520 java.net.URL
12: 57 16656 [Ljava.util.HashMap$Node;
13: 406 16240 java.lang.ref.Finalizer
14: 555 13320 java.util.LinkedList$Node
15: 107 10272 java.util.jar.JarFile$JarFileEntry
16: 123 9840 [Ljava.util.WeakHashMap$Entry;
17: 286 9152 java.util.LinkedList
18: 152 8512 sun.misc.URLClassPath$JarLoader
19: 113 8136 java.lang.reflect.Field
20: 120 7680 java.util.jar.JarFile
21: 235 7520 java.util.Hashtable$Entry
22: 123 6888 sun.nio.cs.UTF_8$Encoder
23: 121 6776 java.util.zip.ZipFile$ZipFileInputStream
24: 111 6216 java.util.zip.ZipFile$ZipFileInflaterInputStream
25: 257 6168 java.io.ExpiringCache$Entry
26: 123 5904 java.util.WeakHashMap
27: 110 5280 java.util.zip.Inflater
28: 121 4840 java.lang.ref.SoftReference
29: 119 4760 sun.nio.cs.UTF_8$Decoder
30: 130 4160 java.lang.ref.ReferenceQueue
31: 256 4096 java.lang.Integer
32: 120 3840 java.util.zip.ZipCoder
33: 111 3552 java.util.concurrent.ConcurrentHashMap$Node
34: 132 3168 java.lang.StringBuffer
35: 22 3072 [Ljava.util.Hashtable$Entry;
36: 8 3008 java.lang.Thread
37: 120 2880 java.util.ArrayDeque
38: 59 2832 java.util.HashMap
39: 110 2640 java.util.zip.ZStreamRef
40: 5 2600 [J
41: 106 2544 java.lang.StringBuilder
42: 30 2400 [S
43: 2 2384 [[Ljava.lang.Object;
44: 132 2112 java.lang.ref.ReferenceQueue$Lock
45: 26 2080 java.lang.reflect.Constructor
46: 16 2048 [Ljava.util.concurrent.ConcurrentHashMap$Node;
47: 60 1920 java.io.File
48: 39 1872 sun.util.locale.LocaleObjectCache$CacheEntry
49: 1 1568 [[B
50: 96 1536 java.lang.Object
51: 37 1480 java.io.ObjectStreamField
52: 26 1456 java.lang.Class$ReflectionData
53: 20 1280 java.util.concurrent.ConcurrentHashMap
54: 2 1064 [Ljava.lang.invoke.MethodHandle;
55: 1 1040 [Ljava.lang.Integer;
56: 1 1040 [[C
57: 36 864 java.util.jar.Attributes$Name
58: 21 840 sun.util.locale.BaseLocale$Key
59: 11 648 [Ljava.lang.reflect.Field;
60: 19 608 java.util.Locale
61: 19 608 sun.util.locale.BaseLocale
62: 13 520 java.security.AccessControlContext
63: 21 504 java.util.Locale$LocaleKey
64: 10 480 java.util.Hashtable
65: 12 480 java.util.WeakHashMap$Entry
66: 18 432 sun.misc.MetaIndex
67: 22 416 [Ljava.lang.Class;
68: 10 400 java.io.FileDescriptor
69: 13 392 [Ljava.io.ObjectStreamField;
70: 1 384 com.intellij.rt.execution.application.AppMainV2$1
71: 1 384 java.lang.ref.Finalizer$FinalizerThread
72: 16 384 java.net.Parts
73: 6 384 java.nio.DirectByteBuffer
74: 16 384 java.util.ArrayList
75: 1 376 java.lang.ref.Reference$ReferenceHandler
76: 6 336 java.nio.DirectLongBufferU
77: 7 336 java.nio.HeapCharBuffer
78: 6 336 java.util.LinkedHashMap
79: 10 320 java.lang.OutOfMemoryError
80: 3 312 [D
81: 13 312 [Ljava.lang.reflect.Constructor;
82: 13 312 sun.reflect.NativeConstructorAccessorImpl
83: 6 288 java.nio.HeapByteBuffer
84: 6 288 java.util.Properties
85: 3 280 [[Ljava.lang.String;
86: 5 280 java.util.ResourceBundle$CacheKey
87: 5 280 sun.util.calendar.ZoneInfo
88: 3 264 java.lang.reflect.Method
89: 11 264 java.net.StandardSocketOptions$StdSocketOption
90: 8 256 java.util.Vector
91: 3 240 [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry;
92: 5 240 java.util.Hashtable$Enumerator
93: 7 224 java.nio.file.attribute.FileTime
94: 9 216 sun.misc.JarIndex
95: 13 208 sun.reflect.DelegatingConstructorAccessorImpl
96: 5 200 java.security.ProtectionDomain
97: 6 192 java.io.FileInputStream
98: 6 192 java.lang.ThreadLocal$ThreadLocalMap$Entry
99: 4 192 java.util.TreeMap
100: 8 192 sun.misc.URLClassPath$3
101: 4 192 sun.nio.cs.StreamEncoder
102: 3 192 sun.nio.cs.ext.DoubleByte$Encoder
103: 2 192 sun.util.calendar.Gregorian$Date
104: 4 160 java.io.BufferedWriter
105: 4 160 java.lang.ClassLoader$NativeLibrary
106: 5 160 java.security.CodeSource
107: 4 160 java.security.PrivilegedActionException
108: 5 160 java.util.ResourceBundle$LoaderReference
109: 5 160 sun.util.locale.provider.LocaleProviderAdapter$Type
110: 6 144 sun.misc.PerfCounter
111: 3 144 sun.misc.URLClassPath
112: 2 128 java.io.ExpiringCache$1
113: 4 128 java.lang.StringCoding$StringEncoder
114: 8 128 java.util.HashSet
115: 4 128 java.util.Stack
116: 1 120 java.net.SocksSocketImpl
117: 5 120 java.util.Collections$UnmodifiableRandomAccessList
118: 5 120 sun.misc.FloatingDecimal$PreparedASCIIToBinaryBuffer
119: 2 112 java.lang.Package
120: 2 112 sun.nio.cs.ISO_8859_1$Encoder
121: 2 112 sun.nio.cs.ext.DoubleByte$Decoder
122: 2 96 java.io.BufferedReader
123: 3 96 java.io.FileOutputStream
124: 4 96 java.io.OutputStreamWriter
125: 4 96 java.lang.RuntimePermission
126: 3 96 java.lang.StringCoding$StringDecoder
127: 2 96 java.lang.ThreadGroup
128: 6 96 java.lang.ThreadLocal
129: 3 96 java.lang.ref.WeakReference
130: 1 96 java.net.DualStackPlainSocketImpl
131: 2 96 java.util.ResourceBundle$BundleReference
132: 6 96 java.util.jar.Attributes
133: 4 96 jdk.net.ExtendedSocketOptions$ExtSocketOption
134: 1 96 sun.misc.Launcher$AppClassLoader
135: 3 96 sun.net.spi.DefaultProxySelector$NonProxyInfo
136: 2 96 sun.nio.cs.StreamDecoder
137: 4 96 sun.security.action.GetPropertyAction
138: 1 88 java.util.jar.JarVerifier
139: 1 88 sun.misc.Launcher$ExtClassLoader
140: 5 80 [Ljava.security.Principal;
141: 2 80 [Lsun.util.locale.provider.LocaleProviderAdapter$Type;
142: 2 80 java.io.BufferedInputStream
143: 2 80 java.io.ExpiringCache
144: 5 80 java.security.ProtectionDomain$Key
145: 2 80 java.util.ServiceLoader$LazyIterator
146: 2 80 sun.misc.FloatingDecimal$BinaryToASCIIBuffer
147: 2 80 sun.misc.URLClassPath$1
148: 2 80 sun.misc.URLClassPath$2
149: 2 80 sun.util.locale.LanguageTag
150: 3 72 java.io.ByteArrayOutputStream
151: 3 72 java.lang.ThreadLocal$ThreadLocalMap
152: 3 72 java.net.Proxy$Type
153: 3 72 java.util.Arrays$ArrayList
154: 3 72 java.util.Collections$SynchronizedSet
155: 1 72 java.util.ResourceBundle$RBClassLoader
156: 3 72 java.util.concurrent.atomic.AtomicLong
157: 3 72 sun.misc.FloatingDecimal$ExceptionalBinaryToASCIIBuffer
158: 1 72 sun.util.locale.provider.JRELocaleProviderAdapter
159: 1 64 [F
160: 2 64 [Ljava.lang.Thread;
161: 2 64 java.io.DataInputStream
162: 2 64 java.io.FileNotFoundException
163: 2 64 java.io.FilePermission
164: 2 64 java.io.PrintStream
165: 2 64 java.lang.ClassValue$Entry
166: 2 64 java.lang.VirtualMachineError
167: 2 64 java.lang.ref.ReferenceQueue$Null
168: 2 64 java.security.BasicPermissionCollection
169: 2 64 java.security.Permissions
170: 2 64 java.util.ArrayList$Itr
171: 2 64 java.util.LinkedHashMap$LinkedEntryIterator
172: 2 64 java.util.ServiceLoader
173: 1 48 [Ljava.io.File;
174: 2 48 [Ljava.lang.reflect.Method;
175: 1 48 [Ljava.net.URL;
176: 2 48 [Ljava.util.Enumeration;
177: 1 48 [Ljava.util.concurrent.TimeUnit;
178: 2 48 java.io.BufferedOutputStream
179: 2 48 java.io.File$PathStatus
180: 2 48 java.io.FilePermissionCollection
181: 2 48 java.lang.Class$1
182: 2 48 java.net.InetAddress$Cache
183: 2 48 java.net.InetAddress$Cache$Type
184: 1 48 java.net.SocketInputStream
185: 2 48 java.net.URLClassLoader$3
186: 2 48 java.nio.charset.CoderResult
187: 3 48 java.nio.charset.CodingErrorAction
188: 3 48 java.util.Collections$UnmodifiableSet
189: 2 48 java.util.Date
190: 3 48 java.util.HashMap$KeySet
191: 3 48 java.util.LinkedHashMap$LinkedKeySet
192: 2 48 java.util.ServiceLoader$1
193: 1 48 java.util.StringTokenizer
194: 2 48 java.util.jar.Manifest
195: 2 48 sun.misc.CompoundEnumeration
196: 2 48 sun.misc.FileURLMapper
197: 2 48 sun.misc.NativeSignalHandler
198: 2 48 sun.misc.Signal
199: 3 48 sun.net.www.protocol.jar.Handler
200: 2 48 sun.nio.cs.Surrogate$Parser
201: 1 48 sun.nio.cs.US_ASCII$Decoder
202: 1 48 sun.util.locale.provider.LocaleResources$ResourceReference
203: 1 48 sun.util.resources.TimeZoneNames
204: 1 48 sun.util.resources.en.TimeZoneNames_en
205: 1 40 java.util.ResourceBundle$1
206: 1 40 sun.nio.cs.StandardCharsets$Aliases
207: 1 40 sun.nio.cs.StandardCharsets$Cache
208: 1 40 sun.nio.cs.StandardCharsets$Classes
209: 1 40 sun.nio.cs.ext.ExtendedCharsets
210: 1 32 [Ljava.lang.OutOfMemoryError;
211: 2 32 [Ljava.lang.StackTraceElement;
212: 1 32 [Ljava.lang.ThreadGroup;
213: 1 32 [Ljava.net.Proxy$Type;
214: 1 32 java.io.ByteArrayInputStream
215: 2 32 java.io.FileInputStream$1
216: 1 32 java.io.WinNTFileSystem
217: 1 32 java.lang.ArithmeticException
218: 2 32 java.lang.Boolean
219: 2 32 java.lang.ClassLoader$2
220: 1 32 java.lang.NullPointerException
221: 1 32 java.net.InetAddress$InetAddressHolder
222: 1 32 java.net.Socket
223: 2 32 java.net.URLClassLoader$3$1
224: 2 32 java.nio.ByteOrder
225: 2 32 java.util.Hashtable$KeySet
226: 2 32 java.util.LinkedHashMap$LinkedEntrySet
227: 1 32 java.util.LinkedHashMap$LinkedKeyIterator
228: 2 32 java.util.concurrent.atomic.AtomicInteger
229: 1 32 java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
230: 1 32 jdk.net.ExtendedSocketOptions$1
231: 1 32 sun.instrument.InstrumentationImpl
232: 2 32 sun.misc.URLClassPath$JarLoader$1
233: 1 32 sun.nio.cs.StandardCharsets
234: 1 32 sun.util.locale.provider.LocaleResources
235: 1 32 sun.util.locale.provider.LocaleServiceProviderPool
236: 1 24 [Ljava.io.File$PathStatus;
237: 1 24 [Ljava.lang.ClassValue$Entry;
238: 1 24 [Ljava.net.InetAddress$Cache$Type;
239: 1 24 [Ljava.security.ProtectionDomain;
240: 1 24 [Lsun.launcher.LauncherHelper;
241: 1 24 java.io.FileReader
242: 1 24 java.io.InputStreamReader
243: 1 24 java.lang.ClassValue$Version
244: 1 24 java.lang.invoke.MethodHandleImpl$4
245: 1 24 java.lang.reflect.ReflectPermission
246: 1 24 java.net.Inet4Address
247: 1 24 java.net.Inet6AddressImpl
248: 1 24 java.net.Proxy
249: 1 24 java.util.BitSet
250: 1 24 java.util.Collections$EmptyMap
251: 1 24 java.util.Collections$SetFromMap
252: 1 24 java.util.Collections$UnmodifiableCollection$1
253: 1 24 java.util.Locale$Cache
254: 1 24 java.util.ResourceBundle$Control$CandidateListCache
255: 1 24 java.util.concurrent.TimeUnit$1
256: 1 24 java.util.concurrent.TimeUnit$2
257: 1 24 java.util.concurrent.TimeUnit$3
258: 1 24 java.util.concurrent.TimeUnit$4
259: 1 24 java.util.concurrent.TimeUnit$5
260: 1 24 java.util.concurrent.TimeUnit$6
261: 1 24 java.util.concurrent.TimeUnit$7
262: 1 24 sun.instrument.TransformerManager
263: 1 24 sun.launcher.LauncherHelper
264: 1 24 sun.misc.URLClassPath$FileLoader
265: 1 24 sun.nio.cs.ISO_8859_1
266: 1 24 sun.nio.cs.ThreadLocalCoders$1
267: 1 24 sun.nio.cs.ThreadLocalCoders$2
268: 1 24 sun.nio.cs.US_ASCII
269: 1 24 sun.nio.cs.UTF_16
270: 1 24 sun.nio.cs.UTF_16BE
271: 1 24 sun.nio.cs.UTF_16LE
272: 1 24 sun.nio.cs.UTF_8
273: 1 24 sun.nio.cs.ext.GBK
274: 1 24 sun.reflect.NativeMethodAccessorImpl
275: 1 24 sun.util.locale.BaseLocale$Cache
276: 1 24 sun.util.locale.provider.SPILocaleProviderAdapter$1
277: 1 24 sun.util.locale.provider.TimeZoneNameProviderImpl
278: 1 24 sun.util.resources.LocaleData$1
279: 1 16 [Ljava.lang.Throwable;
280: 1 16 [Ljava.security.CodeSigner;
281: 1 16 [Ljava.security.cert.Certificate;
282: 1 16 [Lsun.instrument.TransformerManager$TransformerInfo;
283: 1 16 [Lsun.util.calendar.ZoneInfoFile$ZoneOffsetTransitionRule;
284: 1 16 java.io.FileDescriptor$1
285: 1 16 java.lang.CharacterDataLatin1
286: 1 16 java.lang.ClassValue$Identity
287: 1 16 java.lang.Runtime
288: 1 16 java.lang.String$CaseInsensitiveComparator
289: 1 16 java.lang.System$2
290: 1 16 java.lang.Terminator$1
291: 1 16 java.lang.invoke.MemberName$Factory
292: 1 16 java.lang.invoke.MethodHandleImpl$2
293: 1 16 java.lang.invoke.MethodHandleImpl$3
294: 1 16 java.lang.ref.Reference$1
295: 1 16 java.lang.ref.Reference$Lock
296: 1 16 java.lang.reflect.ReflectAccess
297: 1 16 java.net.InetAddress$2
298: 1 16 java.net.URLClassLoader$7
299: 1 16 java.nio.Bits$1
300: 1 16 java.nio.charset.CoderResult$1
301: 1 16 java.nio.charset.CoderResult$2
302: 1 16 java.security.ProtectionDomain$2
303: 1 16 java.security.ProtectionDomain$JavaSecurityAccessImpl
304: 1 16 java.util.Collections$EmptyIterator
305: 1 16 java.util.Collections$EmptyList
306: 1 16 java.util.Collections$EmptySet
307: 1 16 java.util.Hashtable$EntrySet
308: 1 16 java.util.ResourceBundle$Control
309: 1 16 java.util.ResourceBundle$RBClassLoader$1
310: 1 16 java.util.TimeZone$1
311: 1 16 java.util.WeakHashMap$KeySet
312: 1 16 java.util.concurrent.atomic.AtomicBoolean
313: 1 16 java.util.jar.JarVerifier$3
314: 1 16 java.util.jar.JavaUtilJarAccessImpl
315: 1 16 java.util.zip.ZipFile$1
316: 1 16 jdk.net.ExtendedSocketOptions$PlatformSocketOptions
317: 1 16 sun.misc.ASCIICaseInsensitiveComparator
318: 1 16 sun.misc.FloatingDecimal$1
319: 1 16 sun.misc.Launcher
320: 1 16 sun.misc.Launcher$BootClassPathHolder$1
321: 1 16 sun.misc.Launcher$Factory
322: 1 16 sun.misc.Perf
323: 1 16 sun.misc.Unsafe
324: 1 16 sun.net.spi.DefaultProxySelector
325: 1 16 sun.net.www.protocol.file.Handler
326: 1 16 sun.reflect.DelegatingMethodAccessorImpl
327: 1 16 sun.reflect.ReflectionFactory
328: 1 16 sun.util.calendar.Gregorian
329: 1 16 sun.util.calendar.ZoneInfoFile$1
330: 1 16 sun.util.calendar.ZoneInfoFile$Checksum
331: 1 16 sun.util.locale.provider.AuxLocaleProviderAdapter$NullProvider
332: 1 16 sun.util.locale.provider.JRELocaleProviderAdapter$1
333: 1 16 sun.util.locale.provider.SPILocaleProviderAdapter
334: 1 16 sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter
335: 1 16 sun.util.resources.LocaleData
336: 1 16 sun.util.resources.LocaleData$LocaleDataResourceBundleControl
Total 25196 3662360