减少PreparedStatementProxyImpl的内存占用

This commit is contained in:
wenshao
2013-06-05 16:04:42 +08:00
parent 6413fc01ce
commit 6a26f35ebc
6 changed files with 2324 additions and 2282 deletions
@@ -21,7 +21,6 @@ import java.sql.Savepoint;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterEventAdapter;
@@ -507,15 +506,16 @@ public abstract class LogFilter extends FilterEventAdapter implements LogFilterM
return;
}
Map<Integer, JdbcParameter> parameterMap = statement.getParameters();
if (parameterMap == null || parameterMap.size() == 0) {
int parametersSize = statement.getParametersSize();
if (parametersSize == 0) {
statementLog("{conn-" + statement.getConnectionProxy().getId() + ", " + stmtId(statement) + "} executed. "
+ sql);
return;
}
List<Object> parameters = new ArrayList<Object>(parameterMap.size());
for (JdbcParameter jdbcParam : parameterMap.values()) {
List<Object> parameters = new ArrayList<Object>(parametersSize);
for (int i = 0; i < parametersSize; ++i) {
JdbcParameter jdbcParam = statement.getParameter(i);
parameters.add(jdbcParam.getValue());
}
@@ -737,11 +737,16 @@ public abstract class LogFilter extends FilterEventAdapter implements LogFilterM
buf.append(stmtId(statement));
buf.append("}");
buf.append(" Parameters : [");
int parameterIndex = 0;
for (JdbcParameter parameter : statement.getParameters().values()) {
if (parameterIndex != 0) {
for (int i = 0, parametersSize = statement.getParametersSize(); i < parametersSize; ++i) {
JdbcParameter parameter = statement.getParameter(i);
if (i != 0) {
buf.append(", ");
}
if (parameter == null) {
continue;
}
int sqlType = parameter.getSqlType();
Object value = parameter.getValue();
switch (sqlType) {
@@ -752,7 +757,6 @@ public abstract class LogFilter extends FilterEventAdapter implements LogFilterM
buf.append(String.valueOf(value));
break;
}
parameterIndex++;
}
buf.append("]");
statementLog(buf.toString());
@@ -765,14 +769,16 @@ public abstract class LogFilter extends FilterEventAdapter implements LogFilterM
buf.append(stmtId(statement));
buf.append("}");
buf.append(" Types : [");
int parameterIndex = 0;
for (JdbcParameter parameter : statement.getParameters().values()) {
if (parameterIndex != 0) {
for (int i = 0, parametersSize = statement.getParametersSize(); i < parametersSize; ++i) {
JdbcParameter parameter = statement.getParameter(i);
if (i != 0) {
buf.append(", ");
}
if (parameter == null) {
continue;
}
int sqlType = parameter.getSqlType();
buf.append(JdbcUtils.getTypeName(sqlType));
parameterIndex++;
}
buf.append("]");
statementLog(buf.toString());
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,56 +1,59 @@
/*
* 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.proxy.jdbc;
import java.sql.Statement;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.stat.JdbcSqlStat;
/**
* @author wenshao<szujobs@hotmail.com>
*/
public interface StatementProxy extends Statement, WrapperProxy {
ConnectionProxy getConnectionProxy();
Statement getRawObject();
List<String> getBatchSqlList();
String getBatchSql();
JdbcSqlStat getSqlStat();
StatementExecuteType getLastExecuteType();
void setSqlStat(JdbcSqlStat sqlStat);
String getLastExecuteSql();
long getLastExecuteStartNano();
void setLastExecuteStartNano(long lastExecuteStartNano);
void setLastExecuteStartNano();
long getLastExecuteTimeNano();
void setLastExecuteTimeNano(long nano);
void setLastExecuteTimeNano();
Map<Integer, JdbcParameter> getParameters();
boolean isFirstResultSet();
}
/*
* 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.proxy.jdbc;
import java.sql.Statement;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.stat.JdbcSqlStat;
/**
* @author wenshao<szujobs@hotmail.com>
*/
public interface StatementProxy extends Statement, WrapperProxy {
ConnectionProxy getConnectionProxy();
Statement getRawObject();
List<String> getBatchSqlList();
String getBatchSql();
JdbcSqlStat getSqlStat();
StatementExecuteType getLastExecuteType();
void setSqlStat(JdbcSqlStat sqlStat);
String getLastExecuteSql();
long getLastExecuteStartNano();
void setLastExecuteStartNano(long lastExecuteStartNano);
void setLastExecuteStartNano();
long getLastExecuteTimeNano();
void setLastExecuteTimeNano(long nano);
void setLastExecuteTimeNano();
Map<Integer, JdbcParameter> getParameters();
int getParametersSize();
JdbcParameter getParameter(int i);
boolean isFirstResultSet();
}
File diff suppressed because it is too large Load Diff