减少内存占用

This commit is contained in:
wenshao
2013-06-05 16:25:48 +08:00
parent 6a26f35ebc
commit 18d20434b2
7 changed files with 6541 additions and 6499 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -599,13 +599,13 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
}
public JdbcConnectionStat.Entry getConnectionInfo(ConnectionProxy connection) {
JdbcConnectionStat.Entry counter = (JdbcConnectionStat.Entry) connection.getAttributes().get(ATTR_NAME_CONNECTION_STAT);
JdbcConnectionStat.Entry counter = (JdbcConnectionStat.Entry) connection.getAttribute(ATTR_NAME_CONNECTION_STAT);
if (counter == null) {
String dataSourceName = connection.getDirectDataSource().getName();
connection.getAttributes().put(ATTR_NAME_CONNECTION_STAT,
connection.putAttribute(ATTR_NAME_CONNECTION_STAT,
new JdbcConnectionStat.Entry(dataSourceName, connection.getId()));
counter = (JdbcConnectionStat.Entry) connection.getAttributes().get(ATTR_NAME_CONNECTION_STAT);
counter = (JdbcConnectionStat.Entry) connection.getAttribute(ATTR_NAME_CONNECTION_STAT);
}
return counter;
File diff suppressed because it is too large Load Diff
@@ -1,31 +1,39 @@
/*
* 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.Wrapper;
import java.util.Map;
/**
* @author wenshao<szujobs@hotmail.com>
*/
public interface WrapperProxy extends Wrapper {
long getId();
Object getRawObject();
Map<String, Object> getAttributes();
}
/*
* 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.Wrapper;
import java.util.Map;
/**
* @author wenshao<szujobs@hotmail.com>
*/
public interface WrapperProxy extends Wrapper {
long getId();
Object getRawObject();
int getAttributesSize();
void clearAttributes();
Map<String, Object> getAttributes();
Object getAttribute(String key);
void putAttribute(String key, Object value);
}
@@ -1,82 +1,116 @@
/*
* 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.SQLException;
import java.sql.Wrapper;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.druid.filter.FilterChain;
/**
* @author wenshao<szujobs@hotmail.com>
*/
public abstract class WrapperProxyImpl implements WrapperProxy {
private final Wrapper raw;
private final long id;
private final Map<String, Object> attributes = new HashMap<String, Object>(4); // 不需要线程安全
public WrapperProxyImpl(Wrapper wrapper, long id){
this.raw = wrapper;
this.id = id;
}
public long getId() {
return this.id;
}
public Object getRawObject() {
return raw;
}
public abstract FilterChain createChain();
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
if (iface == null) {
return false;
}
if (iface == this.getClass()) {
return true;
}
return createChain().isWrapperFor(raw, iface);
}
@SuppressWarnings("unchecked")
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
if (iface == null) {
return null;
}
if (iface == this.getClass()) {
return (T) this;
}
return createChain().unwrap(raw, iface);
}
public Map<String, Object> getAttributes() {
return this.attributes;
}
}
/*
* 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.SQLException;
import java.sql.Wrapper;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.druid.filter.FilterChain;
/**
* @author wenshao<szujobs@hotmail.com>
*/
public abstract class WrapperProxyImpl implements WrapperProxy {
private final Wrapper raw;
private final long id;
private Map<String, Object> attributes; // 不需要线程安全
public WrapperProxyImpl(Wrapper wrapper, long id){
this.raw = wrapper;
this.id = id;
}
public long getId() {
return this.id;
}
public Object getRawObject() {
return raw;
}
public abstract FilterChain createChain();
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
if (iface == null) {
return false;
}
if (iface == this.getClass()) {
return true;
}
return createChain().isWrapperFor(raw, iface);
}
@SuppressWarnings("unchecked")
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
if (iface == null) {
return null;
}
if (iface == this.getClass()) {
return (T) this;
}
return createChain().unwrap(raw, iface);
}
public int getAttributesSize() {
if (attributes == null) {
return 0;
}
return attributes.size();
}
public void clearAttributes() {
if (this.attributes == null) {
return;
}
this.attributes.clear();
}
public Map<String, Object> getAttributes() {
if (attributes == null) {
attributes = new HashMap<String, Object>(4);
}
return this.attributes;
}
public void putAttribute(String key, Object value) {
if (attributes == null) {
attributes = new HashMap<String, Object>(4);
}
this.attributes.put(key, value);
}
public Object getAttribute(String key){
if (attributes == null) {
return null;
}
return this.attributes.get(key);
}
}
File diff suppressed because it is too large Load Diff