improve mysql sql parser formance

This commit is contained in:
wenshao
2013-01-12 23:01:21 +08:00
parent e20247c503
commit 6c875e1ee0
11 changed files with 785 additions and 44 deletions
@@ -46,7 +46,15 @@ public class SQLInsertStatement extends SQLInsertInto implements SQLStatement {
public static class ValuesClause extends SQLObjectImpl {
private static final long serialVersionUID = 1L;
private final List<SQLExpr> values = new ArrayList<SQLExpr>();
private final List<SQLExpr> values;
public ValuesClause(){
this(new ArrayList<SQLExpr>());
}
public ValuesClause(List<SQLExpr> values){
this.values = values;
}
public List<SQLExpr> getValues() {
return values;
@@ -204,7 +204,7 @@ public class MySqlLexer extends Lexer {
}
}
protected void scanString() {
protected final void scanString() {
mark = pos;
boolean hasSpecial = false;
@@ -15,6 +15,7 @@
*/
package com.alibaba.druid.sql.dialect.mysql.parser;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.druid.sql.ast.SQLCommentHint;
@@ -23,6 +24,7 @@ import com.alibaba.druid.sql.ast.SQLName;
import com.alibaba.druid.sql.ast.SQLOrderBy;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLListExpr;
import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
@@ -127,6 +129,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnlockTablesStatem
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
import com.alibaba.druid.sql.parser.Lexer;
import com.alibaba.druid.sql.parser.ParserException;
import com.alibaba.druid.sql.parser.SQLParseException;
import com.alibaba.druid.sql.parser.SQLSelectParser;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import com.alibaba.druid.sql.parser.Token;
@@ -1762,6 +1765,7 @@ public class MySqlStatementParser extends SQLStatementParser {
}
int columnSize = 0;
if (lexer.token() == (Token.LPAREN)) {
lexer.nextToken();
if (lexer.token() == (Token.SELECT)) {
@@ -1770,22 +1774,73 @@ public class MySqlStatementParser extends SQLStatementParser {
insertStatement.setQuery(select);
} else {
this.exprParser.exprList(insertStatement.getColumns());
columnSize = insertStatement.getColumns().size();
}
accept(Token.RPAREN);
}
if (lexer.token() == Token.VALUES || identifierEquals("VALUE")) {
lexer.nextToken();
lexer.nextTokenLParen();
for (;;) {
accept(Token.LPAREN);
SQLInsertStatement.ValuesClause values = new SQLInsertStatement.ValuesClause();
this.exprParser.exprList(values.getValues());
insertStatement.getValuesList().add(values);
accept(Token.RPAREN);
if (lexer.token() != Token.RPAREN) {
List<SQLExpr> valueExprList;
if (columnSize > 0) {
valueExprList = new ArrayList<SQLExpr>(columnSize);
} else {
valueExprList = new ArrayList<SQLExpr>();
}
for (;;) {
SQLExpr expr;
if (lexer.token() == Token.LITERAL_INT) {
expr = new SQLIntegerExpr(lexer.integerValue());
lexer.nextTokenComma();
} else if (lexer.token() == Token.LITERAL_CHARS) {
expr = new SQLCharExpr(lexer.stringVal());
lexer.nextTokenComma();
} else if (lexer.token() == Token.LITERAL_CHARS) {
expr = new SQLCharExpr(lexer.stringVal());
lexer.nextTokenComma();
} else {
expr = exprParser.expr();
}
if (lexer.token() == Token.COMMA) {
valueExprList.add(expr);
lexer.nextToken();
continue;
} else if (lexer.token() == Token.RPAREN) {
valueExprList.add(expr);
break;
} else {
expr = this.exprParser.primaryRest(expr);
valueExprList.add(expr);
if (lexer.token() == Token.COMMA) {
lexer.nextToken();
continue;
} else {
break;
}
}
}
SQLInsertStatement.ValuesClause values = new SQLInsertStatement.ValuesClause(valueExprList);
insertStatement.getValuesList().add(values);
} else {
SQLInsertStatement.ValuesClause values = new SQLInsertStatement.ValuesClause(new ArrayList<SQLExpr>(0));
insertStatement.getValuesList().add(values);
}
if (lexer.token() != Token.RPAREN) {
throw new SQLParseException("syntax error");
}
lexer.nextTokenComma();
if (lexer.token() == Token.COMMA) {
lexer.nextToken();
lexer.nextTokenLParen();
continue;
} else {
break;
@@ -2114,11 +2169,11 @@ public class MySqlStatementParser extends SQLStatementParser {
stmt.getItems().add(item);
} else if (lexer.token() == Token.UNIQUE) {
lexer.nextToken();
if (lexer.token() == Token.INDEX) {
lexer.nextToken();
}
MySqlAlterTableAddUnique item = new MySqlAlterTableAddUnique();
if (lexer.token() == Token.LPAREN) {
@@ -2342,7 +2397,7 @@ public class MySqlStatementParser extends SQLStatementParser {
return stmt;
}
protected void parseUpdateSet(SQLUpdateStatement update) {
accept(Token.SET);
@@ -187,7 +187,40 @@ public class Lexer {
public String info() {
return this.token + " " + this.stringVal();
}
public final void nextTokenComma() {
if (ch == ' ') {
scanChar();
}
if (ch == ',') {
scanChar();
token = COMMA;
return;
}
if (ch == ')') {
scanChar();
token = RPAREN;
return;
}
nextToken();
}
public final void nextTokenLParen() {
if (ch == ' ') {
scanChar();
}
if (ch == '(') {
scanChar();
token = LPAREN;
return;
}
nextToken();
}
public final void nextToken() {
bufPos = 0;
@@ -223,7 +223,7 @@ public class SQLStatementParser extends SQLParser {
continue;
}
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal() + ", pos " + lexer.pos());
}
}
@@ -0,0 +1,66 @@
/*
* Copyright 1999-2011 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.druid.benckmark.sql;
import java.util.List;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
import com.alibaba.druid.sql.test.TestUtils;
import com.alibaba.druid.util.IOUtils;
public class MySqlPerfMain {
public static void main(String[] args) throws Exception {
String sql = IOUtils.readFromResource("benchmark/sql/ob_sql.txt");
for (int i = 0; i < 10; ++i) {
perfMySql(sql);
}
}
static long perfMySql(String sql) {
long startYGC = TestUtils.getYoungGC();
long startYGCTime = TestUtils.getYoungGCTime();
long startFGC = TestUtils.getFullGC();
long startMillis = System.currentTimeMillis();
for (int i = 0; i < 1000 * 1; ++i) {
execMySql(sql);
}
long millis = System.currentTimeMillis() - startMillis;
long ygc = TestUtils.getYoungGC() - startYGC;
long ygct = TestUtils.getYoungGCTime() - startYGCTime;
long fgc = TestUtils.getFullGC() - startFGC;
System.out.println("MySql\t" + millis + ", ygc " + ygc + ", ygct " + ygct + ", fgc " + fgc);
return millis;
}
static String execMySql(String sql) {
StringBuilder out = new StringBuilder();
MySqlOutputVisitor visitor = new MySqlOutputVisitor(out);
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
// for (SQLStatement statement : statementList) {
// statement.accept(visitor);
// visitor.println();
// }
return out.toString();
}
}
@@ -22,40 +22,54 @@ import junit.framework.TestCase;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
import com.alibaba.druid.sql.test.TestUtils;
import com.alibaba.druid.util.IOUtils;
public class MySqlPerfTest extends TestCase {
private String sql;
protected void setUp() throws Exception {
sql = "SELECT * FROM T";
sql = "SELECT ID, NAME, AGE FROM USER WHERE ID = ?";
}
private String sql;
public void test_pert() throws Exception {
for (int i = 0; i < 10; ++i) {
perfMySql(sql);
}
}
protected void setUp() throws Exception {
sql = "SELECT * FROM T";
sql = "SELECT ID, NAME, AGE FROM USER WHERE ID = ?";
long perfMySql(String sql) {
long startMillis = System.currentTimeMillis();
for (int i = 0; i < 1000 * 1000; ++i) {
execMySql(sql);
}
long millis = System.currentTimeMillis() - startMillis;
System.out.println("MySql\t" + millis);
return millis;
}
sql = IOUtils.readFromResource("benchmark/sql/ob_sql.txt");
}
private String execMySql(String sql) {
StringBuilder out = new StringBuilder();
MySqlOutputVisitor visitor = new MySqlOutputVisitor(out);
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
for (SQLStatement statement : statementList) {
statement.accept(visitor);
visitor.println();
}
return out.toString();
}
public void test_pert() throws Exception {
for (int i = 0; i < 10; ++i) {
perfMySql(sql);
}
}
long perfMySql(String sql) {
long startYGC = TestUtils.getYoungGC();
long startYGCTime = TestUtils.getYoungGCTime();
long startFGC = TestUtils.getFullGC();
long startMillis = System.currentTimeMillis();
for (int i = 0; i < 1000 * 1; ++i) {
execMySql(sql);
}
long millis = System.currentTimeMillis() - startMillis;
long ygc = TestUtils.getYoungGC() - startYGC;
long ygct = TestUtils.getYoungGCTime() - startYGCTime;
long fgc = TestUtils.getFullGC() - startFGC;
System.out.println("MySql\t" + millis + ", ygc " + ygc + ", ygct " + ygct + ", fgc " + fgc);
return millis;
}
private String execMySql(String sql) {
StringBuilder out = new StringBuilder();
MySqlOutputVisitor visitor = new MySqlOutputVisitor(out);
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
// for (SQLStatement statement : statementList) {
// statement.accept(visitor);
// visitor.println();
// }
return out.toString();
}
}
@@ -71,7 +71,7 @@ public class MySqlParserResourceTest extends TestCase {
System.out.println();
expect = expect.replaceAll("\\r\\n", "\n");
Assert.assertEquals(expect, text.trim());
Assert.assertEquals("errror resource " + resource, expect, text.trim());
String mergeExpect = null;
if (items.length == 3) {
@@ -15,9 +15,13 @@
*/
package com.alibaba.druid.sql.test;
import java.lang.management.ManagementFactory;
import java.util.Arrays;
import java.util.List;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor;
import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerOutputVisitor;
@@ -69,4 +73,67 @@ public class TestUtils {
return out.toString();
}
public static long getYoungGC() {
try {
// java.lang:type=GarbageCollector,name=G1 Young Generation
// java.lang:type=GarbageCollector,name=G1 Old Generation
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName;
if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=ParNew"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=ParNew");
} else if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=Copy"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=Copy");
} else if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=G1 Young Generation"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=G1 Young Generation");
} else {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=PS Scavenge");
}
return (Long) mbeanServer.getAttribute(objectName, "CollectionCount");
} catch (Exception e) {
throw new RuntimeException("error");
}
}
public static long getYoungGCTime() {
try {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName;
if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=ParNew"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=ParNew");
} else if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=Copy"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=Copy");
} else if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=G1 Young Generation"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=G1 Young Generation");
} else {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=PS Scavenge");
}
return (Long) mbeanServer.getAttribute(objectName, "CollectionTime");
} catch (Exception e) {
throw new RuntimeException("error", e);
}
}
public static long getFullGC() {
try {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName objectName;
if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=ConcurrentMarkSweep"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=ConcurrentMarkSweep");
} else if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=MarkSweepCompact"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=MarkSweepCompact");
} else if (mbeanServer.isRegistered(new ObjectName("java.lang:type=GarbageCollector,name=G1 Old Generation"))) {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=G1 Old Generation");
} else {
objectName = new ObjectName("java.lang:type=GarbageCollector,name=PS MarkSweep");
}
return (Long) mbeanServer.getAttribute(objectName, "CollectionCount");
} catch (Exception e) {
throw new RuntimeException("error");
}
}
}
+497
View File
@@ -0,0 +1,497 @@
num #instances #bytes class name
----------------------------------------------
1: 1658 9172640 [I
2: 14792 7582496 [C
3: 4308 2630640 [B
4: 11195 1528856 <methodKlass>
5: 11195 1443640 <constMethodKlass>
6: 30773 984736 java.lang.String
7: 836 939240 <constantPoolKlass>
8: 17480 849376 <symbolKlass>
9: 836 630248 <instanceKlassKlass>
10: 749 622536 <constantPoolCacheKlass>
11: 12056 592440 [Ljava.lang.Object;
12: 20002 480048 com.alibaba.druid.sql.ast.expr.SQLCharExpr
13: 20002 480048 com.alibaba.druid.sql.ast.expr.SQLIntegerExpr
14: 10236 245664 java.util.ArrayList
15: 10001 240024 com.alibaba.druid.sql.ast.statement.SQLInsertStatement$ValuesClause
16: 10273 164368 java.lang.Integer
17: 1697 116384 [S
18: 1190 103072 [Ljava.util.HashMap$Entry;
19: 952 99008 java.lang.Class
20: 102 85448 <methodDataKlass>
21: 1392 78984 [[I
22: 768 67584 java.lang.reflect.Method
23: 1331 63888 java.nio.HeapCharBuffer
24: 877 56128 java.net.URL
25: 1152 55296 java.nio.HeapByteBuffer
26: 1118 53664 java.util.HashMap
27: 87 50808 <objArrayKlassKlass>
28: 1936 46464 java.lang.StringBuilder
29: 1301 41632 java.util.HashMap$Entry
30: 976 39040 java.util.TreeMap$Entry
31: 1150 27600 java.util.LinkedList$Entry
32: 1272 24696 [Ljava.lang.Class;
33: 263 21096 [Ljava.lang.reflect.Method;
34: 436 20928 java.util.TreeMap
35: 739 20696 [Ljava.lang.String;
36: 775 18600 java.io.File
37: 918 14688 java.util.HashSet
38: 166 11952 java.lang.reflect.Field
39: 135 10800 java.util.jar.JarFile$JarFileEntry
40: 236 9440 java.lang.ref.SoftReference
41: 392 9408 java.util.LinkedList
42: 377 9048 java.lang.StringBuffer
43: 218 8720 java.lang.ref.Finalizer
44: 135 8640 java.util.zip.ZipEntry
45: 214 8560 java.util.LinkedHashMap$Entry
46: 249 7968 java.util.Hashtable$Entry
47: 232 7424 java.lang.ref.WeakReference
48: 132 7392 java.util.zip.ZipFile$1
49: 300 7200 java.net.URLClassLoader$1
50: 203 6496 java.security.PrivilegedActionException
51: 133 6384 java.util.zip.ZipFile$ZipFileInputStream
52: 195 6240 java.util.TreeMap$ValueIterator
53: 189 6048 java.util.TreeMap$KeyIterator
54: 180 5760 java.util.TreeMap$EntryIterator
55: 167 5344 java.lang.ClassNotFoundException
56: 51 4960 [Ljava.util.Hashtable$Entry;
57: 203 4960 [Ljavax.management.Descriptor;
58: 8 4672 <typeArrayKlassKlass>
59: 189 4536 com.alibaba.druid.sql.parser.Token
60: 189 4536 javax.management.ImmutableDescriptor
61: 108 4320 java.util.WeakHashMap$Entry
62: 133 4256 java.security.CodeSource
63: 173 4152 java.net.Parts
64: 93 3720 sun.misc.URLClassPath$JarLoader
65: 66 3696 java.util.jar.JarFile
66: 112 3584 com.sun.jmx.mbeanserver.ConvertingMethod
67: 61 3416 java.beans.MethodDescriptor
68: 195 3120 java.util.TreeMap$Values
69: 68 3104 [Ljavax.management.MBeanAttributeInfo;
70: 89 3088 [Ljavax.management.ObjectName$Property;
71: 189 3024 java.util.TreeMap$KeySet
72: 91 2912 java.util.Vector
73: 180 2880 java.util.TreeMap$EntrySet
74: 88 2816 java.util.AbstractList$Itr
75: 113 2712 java.util.jar.Attributes$Name
76: 67 2680 java.util.HashMap$KeyIterator
77: 37 2664 java.beans.PropertyDescriptor
78: 24 2624 [Ljava.util.WeakHashMap$Entry;
79: 82 2624 java.io.FileInputStream
80: 109 2528 [Ljavax.management.MBeanParameterInfo;
81: 77 2464 sun.misc.URLClassPath$FileLoader$1
82: 3 2328 [Lcom.alibaba.druid.sql.parser.Token;
83: 12 2304 <klassKlass>
84: 119 2280 [Lcom.sun.jmx.mbeanserver.OpenConverter;
85: 95 2280 sun.misc.URLClassPath$3
86: 92 2208 java.io.ExpiringCache$Entry
87: 135 2160 java.lang.Object
88: 88 2112 java.lang.Class$MethodArray
89: 130 2080 sun.reflect.ConstantPool
90: 65 2080 java.util.zip.Inflater
91: 32 2048 javax.management.openmbean.OpenMBeanAttributeInfoSupport
92: 84 2016 sun.misc.FileURLMapper
93: 84 2016 java.io.FileDescriptor
94: 124 1984 java.util.Collections$EmptySet$1
95: 82 1968 com.sun.jmx.mbeanserver.MBeanAnalyzer$AttrMethods
96: 61 1952 java.io.DataInputStream
97: 48 1920 java.util.concurrent.ConcurrentHashMap$Segment
98: 40 1920 javax.management.MBeanInfo
99: 59 1888 sun.misc.URLClassPath$JarLoader$2
100: 57 1824 javax.management.MBeanAttributeInfo
101: 55 1760 java.util.LinkedHashMap$EntryIterator
102: 23 1656 java.lang.reflect.Constructor
103: 66 1584 sun.reflect.generics.tree.SimpleClassTypeSignature
104: 49 1568 java.util.concurrent.locks.ReentrantLock$NonfairSync
105: 49 1568 com.sun.jmx.mbeanserver.WeakIdentityHashMap$IdentityWeakReference
106: 65 1560 java.util.zip.ZStreamRef
107: 85 1360 java.util.concurrent.atomic.AtomicInteger
108: 84 1344 sun.misc.URLClassPath$JarLoader$1
109: 27 1296 java.util.Hashtable
110: 48 1288 [Ljavax.management.MBeanOperationInfo;
111: 76 1272 [Lsun.reflect.generics.tree.TypeArgument;
112: 51 1264 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;
113: 22 1232 java.util.LinkedHashMap
114: 30 1200 javax.management.ObjectName
115: 49 1176 javax.management.ObjectName$Property
116: 29 1160 java.io.ObjectStreamField
117: 6 1144 [Z
118: 45 1080 org.apache.log4j.CategoryKey
119: 19 1064 java.lang.Package
120: 1 1040 [Ljava.lang.Integer;
121: 21 1008 java.util.StringTokenizer
122: 9 1008 java.lang.Thread
123: 17 952 javax.management.MBeanServerNotification
124: 59 944 sun.net.www.ParseUtil
125: 20 944 [Ljava.lang.reflect.Field;
126: 34 936 [Ljavax.management.openmbean.OpenType;
127: 18 864 java.util.WeakHashMap
128: 27 864 java.lang.ref.ReferenceQueue
129: 15 840 javax.management.openmbean.ArrayType
130: 20 800 javax.management.MBeanOperationInfo
131: 16 768 sun.nio.cs.StreamDecoder
132: 32 768 com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter
133: 23 736 java.util.concurrent.ConcurrentHashMap$HashEntry
134: 15 720 java.io.BufferedReader
135: 17 680 sun.nio.cs.UTF_8$Decoder
136: 17 680 org.apache.log4j.Logger
137: 17 680 java.util.HashMap$EntryIterator
138: 6 672 [Ljava.beans.MethodDescriptor;
139: 29 648 [Lsun.reflect.generics.tree.FieldTypeSignature;
140: 16 640 com.sun.jmx.mbeanserver.MXBeanSupport
141: 39 624 java.util.HashMap$EntrySet
142: 6 624 sun.net.www.protocol.file.FileURLConnection
143: 19 608 java.util.Locale
144: 31 592 [Ljava.lang.reflect.Constructor;
145: 18 576 java.io.FileNotFoundException
146: 24 576 java.util.Arrays$ArrayList
147: 18 576 javax.management.MBeanParameterInfo
148: 14 560 javax.management.openmbean.SimpleType
149: 23 552 com.sun.jmx.mbeanserver.PerInterface$MethodAndSig
150: 23 552 sun.security.action.GetPropertyAction
151: 24 536 [[Ljava.lang.annotation.Annotation;
152: 11 528 java.util.logging.LogManager$LoggerWeakRef
153: 32 512 java.util.HashMap$KeySet
154: 16 512 sun.management.ManagementFactory$1
155: 9 504 javax.management.openmbean.CompositeType
156: 10 480 java.util.Hashtable$Enumerator
157: 12 480 java.util.HashMap$ValueIterator
158: 5 464 [Ljava.net.URL;
159: 29 464 java.lang.ref.ReferenceQueue$Lock
160: 28 448 [Ljava.lang.annotation.Annotation;
161: 8 448 javax.management.openmbean.OpenMBeanParameterInfoSupport
162: 14 448 java.security.AccessControlContext
163: 11 440 com.sun.jmx.mbeanserver.PerInterface
164: 21 440 [Ljava.lang.reflect.Type;
165: 18 432 java.util.Date
166: 17 408 javax.management.ObjectInstance
167: 17 408 com.sun.jmx.mbeanserver.NamedObject
168: 17 408 java.util.concurrent.CopyOnWriteArrayList$COWIterator
169: 16 384 java.util.Collections$SingletonList
170: 6 384 java.beans.Introspector
171: 4 376 [Ljava.io.File;
172: 15 360 javax.management.StandardMBean
173: 21 336 java.lang.Boolean
174: 21 336 sun.reflect.generics.tree.ClassTypeSignature
175: 7 336 java.util.Properties
176: 21 336 java.util.jar.Attributes
177: 14 336 java.io.InputStreamReader
178: 12 328 [Ljava.io.ObjectStreamField;
179: 5 320 java.util.logging.Logger
180: 13 312 org.apache.log4j.Level
181: 13 312 sun.misc.JarIndex
182: 6 288 java.beans.BeanDescriptor
183: 9 288 sun.reflect.UnsafeQualifiedStaticObjectFieldAccessorImpl
184: 7 280 com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter
185: 5 280 java.util.ResourceBundle$CacheKey
186: 5 280 sun.management.MemoryPoolImpl
187: 3 264 java.util.jar.JarVerifier
188: 11 264 com.sun.jmx.mbeanserver.MBeanAnalyzer
189: 11 264 com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker
190: 6 264 [Ljava.beans.PropertyDescriptor;
191: 11 264 sun.misc.MetaIndex
192: 8 256 java.lang.OutOfMemoryError
193: 8 256 org.apache.log4j.ProvisionNode
194: 8 256 java.lang.ArrayIndexOutOfBoundsException
195: 3 240 [Ljava.util.concurrent.ConcurrentHashMap$Segment;
196: 10 240 java.net.URLClassLoader$2
197: 6 240 java.beans.GenericBeanInfo
198: 6 240 sun.reflect.generics.repository.MethodRepository
199: 3 232 [J
200: 13 224 [Ljavax.management.MBeanConstructorInfo;
201: 9 216 java.util.logging.LogManager$LogNode
202: 9 216 sun.reflect.NativeConstructorAccessorImpl
203: 9 216 java.util.logging.Level
204: 9 216 sun.reflect.generics.visitor.Reifier
205: 5 200 java.io.BufferedInputStream
206: 5 200 sun.management.MemoryPoolImpl$PoolSensor
207: 5 200 sun.management.MemoryPoolImpl$CollectionSensor
208: 8 192 [Ljava.lang.reflect.TypeVariable;
209: 8 192 java.lang.Class$1
210: 8 192 sun.reflect.generics.parser.SignatureParser
211: 4 192 sun.nio.cs.UTF_8$Encoder
212: 6 192 sun.reflect.generics.tree.MethodTypeSignature
213: 12 192 java.util.HashMap$Values
214: 8 192 sun.reflect.generics.factory.CoreReflectionFactory
215: 6 192 org.apache.log4j.helpers.PatternParser$LiteralPatternConverter
216: 6 192 java.util.logging.LogManager$3
217: 11 176 com.sun.jmx.mbeanserver.PerInterface$InitMaps
218: 3 168 sun.util.calendar.ZoneInfo
219: 3 168 sun.nio.cs.StreamEncoder
220: 3 168 javax.management.openmbean.OpenMBeanOperationInfoSupport
221: 5 160 java.util.ResourceBundle$LoaderReference
222: 5 160 java.io.FilePermission
223: 6 144 java.util.Collections$UnmodifiableRandomAccessList
224: 6 144 sun.reflect.NativeMethodAccessorImpl
225: 3 144 java.util.concurrent.ConcurrentHashMap
226: 9 144 sun.reflect.DelegatingConstructorAccessorImpl
227: 8 144 [Lsun.reflect.generics.tree.FormalTypeParameter;
228: 6 144 sun.reflect.generics.scope.MethodScope
229: 6 144 sun.net.www.MessageHeader
230: 3 144 java.util.Properties$LineReader
231: 6 144 sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
232: 4 128 com.sun.jmx.mbeanserver.OpenConverter$ArrayConverter
233: 4 128 java.util.Stack
234: 4 128 org.apache.log4j.helpers.PatternParser$BasicPatternConverter
235: 6 128 [Ljavax.management.MBeanNotificationInfo;
236: 4 128 java.security.Permissions
237: 1 120 java.util.logging.LogManager$Cleaner
238: 5 120 java.lang.RuntimePermission
239: 5 120 com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr
240: 3 120 java.util.IdentityHashMap
241: 3 120 java.security.ProtectionDomain
242: 2 112 java.io.ExpiringCache$1
243: 1 112 java.util.GregorianCalendar
244: 1 112 java.lang.ref.Reference$ReferenceHandler
245: 1 112 java.lang.ref.Finalizer$FinalizerThread
246: 5 104 [Lcom.sun.jmx.mbeanserver.ClassLoaderRepositorySupport$LoaderEntry;
247: 2 96 java.lang.ThreadGroup
248: 6 96 sun.reflect.DelegatingMethodAccessorImpl
249: 3 96 java.security.BasicPermissionCollection
250: 2 96 java.io.BufferedWriter
251: 3 96 sun.misc.URLClassPath
252: 3 96 sun.reflect.generics.reflectiveObjects.TypeVariableImpl
253: 1 96 sun.util.calendar.Gregorian$Date
254: 6 96 [Lsun.reflect.generics.tree.TypeSignature;
255: 3 96 com.sun.jmx.mbeanserver.OpenConverter$EnumConverter
256: 2 96 javax.management.openmbean.TabularType
257: 6 96 [Ljava.beans.BeanInfo;
258: 3 96 java.io.ByteArrayInputStream
259: 2 96 org.apache.log4j.helpers.PatternParser
260: 3 96 java.util.jar.Manifest$FastInputStream
261: 3 96 java.lang.NoSuchMethodError
262: 2 96 java.util.ResourceBundle$BundleReference
263: 3 96 java.io.OutputStreamWriter
264: 3 88 [[Ljava.lang.Object;
265: 2 80 java.io.ExpiringCache
266: 1 80 sun.misc.Launcher$ExtClassLoader
267: 2 80 com.sun.jmx.mbeanserver.OpenConverter$TabularConverter
268: 5 80 java.lang.ThreadLocal
269: 1 80 [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry;
270: 5 80 java.io.FilePermission$1
271: 3 72 sun.reflect.generics.tree.FormalTypeParameter
272: 3 72 sun.misc.Signal
273: 3 72 java.util.jar.Manifest
274: 1 72 [Ljavax.management.openmbean.SimpleType;
275: 3 72 java.lang.Long
276: 3 72 java.io.ByteArrayOutputStream
277: 1 72 java.util.logging.LogManager$RootLogger
278: 3 72 [Ljavax.management.openmbean.OpenMBeanParameterInfo;
279: 1 72 sun.misc.Launcher$AppClassLoader
280: 3 72 java.io.FilePermissionCollection
281: 2 64 sun.reflect.generics.repository.ClassRepository
282: 2 64 java.io.FileOutputStream
283: 2 64 sun.misc.URLClassPath$1
284: 1 64 org.apache.log4j.ConsoleAppender
285: 2 64 sun.management.GarbageCollectorImpl
286: 2 64 com.sun.jmx.mbeanserver.OpenConverter$CollectionConverter
287: 2 64 java.util.Collections$SynchronizedMap
288: 4 64 sun.reflect.ReflectionFactory$GetReflectionFactoryAction
289: 4 64 com.sun.jmx.mbeanserver.GetPropertyAction
290: 2 64 java.lang.ClassLoader$NativeLibrary
291: 4 64 java.lang.Class$3
292: 2 64 java.lang.ThreadLocal$ThreadLocalMap$Entry
293: 2 64 java.lang.ref.ReferenceQueue$Null
294: 2 64 java.io.PrintStream
295: 2 64 javax.management.MBeanNotificationInfo
296: 2 64 [Ljava.lang.Thread;
297: 1 56 java.util.ResourceBundle$RBClassLoader
298: 1 56 com.alibaba.druid.sql.dialect.mysql.parser.MySqlLexer
299: 1 56 sun.awt.AppContext
300: 1 56 [Ljava.lang.Runnable;
301: 2 48 [Ljava.util.Enumeration;
302: 2 48 org.apache.log4j.config.PropertySetter
303: 1 48 com.sun.jmx.mbeanserver.MBeanIntrospector$PerInterfaceMap
304: 2 48 sun.reflect.generics.tree.ClassSignature
305: 1 48 org.apache.log4j.Hierarchy
306: 3 48 java.nio.charset.CodingErrorAction
307: 1 48 com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMap
308: 2 48 java.net.URLClassLoader$3
309: 2 48 com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport$LoaderEntry
310: 2 48 sun.misc.CompoundEnumeration
311: 1 48 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor
312: 3 48 java.net.URLClassLoader$3$1
313: 3 48 java.security.ProtectionDomain$Key
314: 3 48 [Ljava.security.Principal;
315: 3 48 [Ljava.security.CodeSigner;
316: 3 48 java.util.jar.JarVerifier$3
317: 1 48 sun.security.util.ManifestEntryVerifier
318: 2 48 sun.misc.NativeSignalHandler
319: 1 48 com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement
320: 2 48 sun.misc.URLClassPath$FileLoader
321: 2 48 java.nio.charset.CoderResult
322: 2 48 java.lang.management.ManagementPermission
323: 3 48 sun.net.www.protocol.jar.Handler
324: 2 48 com.sun.jmx.mbeanserver.WeakIdentityHashMap
325: 2 48 java.io.BufferedOutputStream
326: 1 48 java.util.logging.LogManager
327: 2 48 org.apache.log4j.helpers.FormattingInfo
328: 2 48 sun.awt.MostRecentKeyValue
329: 2 48 java.io.FileReader
330: 1 48 com.sun.jmx.mbeanserver.OpenConverter$ConverterMap
331: 2 48 sun.reflect.generics.scope.ClassScope
332: 2 40 [D
333: 2 40 [Lsun.reflect.generics.tree.ClassTypeSignature;
334: 1 40 com.sun.jmx.mbeanserver.JmxMBeanServer
335: 1 40 sun.nio.cs.StandardCharsets$Aliases
336: 1 40 java.util.ResourceBundle$1
337: 1 40 sun.nio.cs.StandardCharsets$Classes
338: 1 40 sun.nio.cs.StandardCharsets$Cache
339: 1 40 [Ljava.lang.management.MemoryPoolMXBean;
340: 1 40 com.sun.jmx.mbeanserver.MBeanServerDelegateImpl
341: 1 40 org.apache.log4j.helpers.PatternParser$DatePatternConverter
342: 1 40 org.apache.log4j.helpers.PatternParser$LocationPatternConverter
343: 1 40 org.apache.log4j.helpers.PatternParser$CategoryPatternConverter
344: 1 40 org.apache.log4j.spi.RootLogger
345: 1 40 sun.util.resources.CalendarData
346: 1 40 sun.util.resources.CalendarData_en
347: 2 32 sun.management.VMManagementImpl$1
348: 1 32 sun.misc.URLClassPath$2
349: 1 32 sun.management.MemoryImpl
350: 1 32 java.beans.PropertyChangeSupport
351: 1 32 [Ljava.lang.management.MemoryManagerMXBean;
352: 1 32 java.lang.VirtualMachineError
353: 1 32 java.lang.NoSuchFieldException
354: 1 32 javax.management.StandardEmitterMBean
355: 1 32 [Ljava.lang.ThreadGroup;
356: 1 32 sun.management.VMManagementImpl
357: 2 32 sun.reflect.ReflectionFactory$1
358: 1 32 java.lang.ref.Reference
359: 2 32 java.nio.ByteOrder
360: 1 32 org.apache.log4j.helpers.QuietWriter
361: 1 32 javax.management.MBeanConstructorInfo
362: 2 32 java.lang.Shutdown$Lock
363: 1 32 com.alibaba.druid.support.logging.Log4jImpl
364: 1 32 java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
365: 2 32 org.apache.log4j.DefaultCategoryFactory
366: 2 32 [Ljava.util.logging.Handler;
367: 1 32 java.io.StringWriter
368: 2 32 java.lang.ClassLoader$3
369: 1 32 org.apache.log4j.PatternLayout
370: 1 32 sun.misc.SoftCache
371: 1 32 java.lang.NullPointerException
372: 1 32 com.alibaba.druid.sql.ast.statement.SQLExprTableSource
373: 1 32 java.lang.ArithmeticException
374: 1 32 sun.nio.cs.StandardCharsets
375: 1 32 [Ljava.lang.OutOfMemoryError;
376: 1 32 java.beans.PropertyChangeEvent
377: 1 32 com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor
378: 2 32 com.alibaba.druid.sql.parser.Keywords
379: 1 32 java.io.UnixFileSystem
380: 1 24 sun.management.CompilationImpl
381: 1 24 java.util.concurrent.CopyOnWriteArrayList
382: 1 24 sun.nio.cs.UTF_8
383: 1 24 com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport
384: 1 24 sun.management.MemoryManagerImpl
385: 1 24 java.util.logging.LoggingPermission
386: 1 24 java.util.Collections$EmptyMap
387: 1 24 org.apache.log4j.helpers.ISO8601DateFormat
388: 1 24 java.lang.StringCoding$StringEncoder
389: 1 24 com.sun.management.UnixOperatingSystem
390: 1 24 java.lang.reflect.ReflectPermission
391: 1 24 java.util.Collections$SynchronizedSet
392: 1 24 sun.management.RuntimeImpl
393: 1 24 java.util.zip.ZipFile$2
394: 1 24 org.apache.log4j.helpers.OnlyOnceErrorHandler
395: 1 24 java.util.jar.JarFile$1
396: 1 24 org.apache.log4j.PropertyConfigurator
397: 1 24 com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser
398: 1 24 sun.util.resources.LocaleData$1
399: 1 24 com.sun.jmx.mbeanserver.Repository
400: 1 24 com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser
401: 1 24 java.lang.ThreadLocal$ThreadLocalMap
402: 1 24 java.security.Policy$UnsupportedEmptyCollection
403: 1 24 com.sun.jmx.mbeanserver.MXBeanLookup
404: 1 24 javax.management.NotificationBroadcasterSupport
405: 1 24 java.lang.StringCoding$StringDecoder
406: 1 24 java.security.Policy$PolicyInfo
407: 1 24 java.util.BitSet
408: 1 24 java.util.Vector$1
409: 1 24 sun.management.ThreadImpl
410: 1 24 sun.misc.Launcher$AppClassLoader$1
411: 1 24 sun.net.ProgressMonitor
412: 1 24 com.sun.jmx.remote.util.ClassLogger
413: 1 24 javax.management.MBeanInfo$ArrayGettersSafeAction
414: 1 16 com.sun.jmx.trace.TraceManager
415: 1 16 [Ljava.security.cert.Certificate;
416: 1 16 [F
417: 1 16 java.lang.System$2
418: 1 16 java.util.logging.Logging
419: 1 16 com.sun.jmx.mbeanserver.MXBeanIntrospector
420: 1 16 java.util.Hashtable$EmptyEnumerator
421: 1 16 java.lang.ClassLoader$2
422: 1 16 sun.reflect.generics.tree.TypeVariableSignature
423: 1 16 java.lang.String$CaseInsensitiveComparator
424: 1 16 java.util.Collections$EmptyList
425: 1 16 java.util.Hashtable$EmptyIterator
426: 1 16 sun.jkernel.DownloadManager$1
427: 1 16 sun.jkernel.DownloadManager$2
428: 1 16 java.security.ProtectionDomain$2
429: 1 16 java.lang.Runtime
430: 1 16 java.util.Collections$ReverseComparator
431: 1 16 java.nio.Bits$1
432: 1 16 [Ljava.lang.StackTraceElement;
433: 1 16 java.lang.ApplicationShutdownHooks$1
434: 1 16 java.util.Hashtable$EntrySet
435: 1 16 com.sun.jmx.mbeanserver.JmxMBeanServer$1
436: 1 16 java.io.File$1
437: 1 16 com.sun.jmx.mbeanserver.MBeanAnalyzer$MethodOrder
438: 1 16 org.apache.log4j.or.RendererMap
439: 1 16 java.lang.Terminator$1
440: 1 16 java.net.URLClassLoader$7
441: 1 16 java.security.AccessControlContext$1
442: 1 16 com.sun.jmx.mbeanserver.MBeanInstantiator
443: 1 16 org.apache.log4j.or.DefaultRenderer
444: 1 16 org.apache.log4j.spi.DefaultRepositorySelector
445: 1 16 java.util.ResourceBundle$RBClassLoader$1
446: 1 16 [Ljava.beans.EventSetDescriptor;
447: 1 16 javax.management.MBeanServerBuilder
448: 1 16 sun.management.ClassLoadingImpl
449: 1 16 com.sun.beans.AppContext
450: 1 16 com.sun.jmx.mbeanserver.SecureClassLoaderRepository
451: 1 16 sun.management.HotSpotDiagnostic
452: 1 16 java.util.concurrent.locks.ReentrantLock
453: 1 16 sun.net.www.protocol.file.Handler
454: 1 16 sun.misc.BASE64Decoder
455: 1 16 java.lang.Compiler$1
456: 1 16 java.net.UnknownContentHandler
457: 1 16 sun.misc.Launcher$ExtClassLoader$1
458: 1 16 java.util.jar.JavaUtilJarAccessImpl
459: 1 16 sun.util.calendar.Gregorian
460: 1 16 sun.misc.Launcher$1
461: 1 16 java.util.logging.LogManager$2
462: 1 16 sun.misc.Launcher
463: 1 16 sun.misc.Launcher$2
464: 1 16 java.net.URL$1
465: 1 16 java.nio.charset.CoderResult$1
466: 1 16 java.util.ResourceBundle$Control
467: 1 16 sun.util.resources.LocaleData$LocaleDataResourceBundleControl
468: 1 16 sun.misc.Launcher$Factory
469: 1 16 java.nio.charset.CoderResult$2
470: 1 16 sun.security.action.LoadLibraryAction
471: 1 16 java.util.concurrent.atomic.AtomicReference
472: 1 16 javax.management.NotificationBroadcasterSupport$1
473: 1 16 sun.awt.AppContext$1
474: 1 16 java.util.Collections$EmptySet
475: 1 16 sun.awt.AppContext$2
476: 1 16 org.apache.log4j.SortedKeyEnumeration
477: 1 16 sun.reflect.ReflectionFactory
478: 1 16 sun.misc.Unsafe
479: 1 16 java.lang.ref.Reference$Lock
480: 1 16 sun.awt.AppContext$6
481: 1 16 sun.util.calendar.ZoneInfoFile$1
482: 1 16 sun.misc.ASCIICaseInsensitiveComparator
483: 1 16 java.lang.reflect.ReflectAccess
484: 1 16 javax.management.JMX
485: 1 16 org.apache.log4j.helpers.AppenderAttachableImpl
486: 1 16 java.util.logging.LogManager$1
487: 1 16 java.io.FileDescriptor$1
488: 1 16 com.sun.beans.WeakCache
489: 1 16 sun.util.calendar.ZoneInfoFile$2
490: 1 16 java.util.TimeZone$1
491: 1 16 com.sun.jmx.mbeanserver.DescriptorCache
492: 1 16 java.lang.SystemClassLoaderAction
493: 1 16 sun.net.DefaultProgressMeteringPolicy
Total 207629 30047976
File diff suppressed because one or more lines are too long