opimized memory used

This commit is contained in:
wenshao
2012-10-07 22:08:53 +08:00
parent 7d091f3cc9
commit 5088fa8a34
6 changed files with 350 additions and 118 deletions
@@ -64,20 +64,17 @@ public class StatFilterAfterResetTest extends TestCase {
sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Assert.assertNotNull(sqlStat);
Histogram histogram = sqlStat.getExecuteAndResultHoldTimeHistogram();
Assert.assertEquals("first failed", 1,
histogram.getSum());
Assert.assertEquals("first failed", 1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
rs.close();
Assert.assertEquals("second failed", 1,
histogram.getSum());
Assert.assertEquals("second failed", 1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
stmt.close();
conn.close();
Assert.assertEquals(1, histogram.getSum());
Assert.assertEquals(1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
}
JdbcStatManager.getInstance().reset();
@@ -97,15 +94,13 @@ public class StatFilterAfterResetTest extends TestCase {
}
Assert.assertNotSame(sqlStat, dataSource.getDataSourceStat().getSqlStat(sql));
{
Histogram histogram = sqlStat.getExecuteAndResultHoldTimeHistogram();
Assert.assertEquals(0, histogram.getValue(0) + histogram.getValue(1) + histogram.getValue(2));
Assert.assertEquals(0, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
}
sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Histogram histogram = sqlStat.getExecuteAndResultHoldTimeHistogram();
Assert.assertEquals(1, histogram.getValue(0) + histogram.getValue(1) + histogram.getValue(2));
Assert.assertEquals(1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
}
}
@@ -79,12 +79,10 @@ public class StatFilterExecuteFirstResultSetTest extends TestCase {
JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Histogram histogram = sqlStat.getHistogram();
Assert.assertEquals(1, histogram.getSum());
Assert.assertEquals(1, sqlStat.getHistogramSum());
Histogram rsHoldHistogram = sqlStat.getExecuteAndResultHoldTimeHistogram();
Assert.assertEquals(1, rsHoldHistogram.getSum());
Assert.assertEquals(1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
}
static class MyMockPreparedStatement extends MockPreparedStatement {
@@ -67,7 +67,7 @@ public class StatFilterExecuteTest extends TestCase {
PreparedStatement stmt = conn.prepareStatement(sql);
Assert.assertEquals(0, dataSource.getDataSourceStat().getSqlStat(sql).getExecuteAndResultHoldTimeHistogram().getSum());
Assert.assertEquals(0, dataSource.getDataSourceStat().getSqlStat(sql).getExecuteAndResultHoldTimeHistogramSum());
boolean firstResult = stmt.execute();
Assert.assertFalse(firstResult);
@@ -78,12 +78,9 @@ public class StatFilterExecuteTest extends TestCase {
JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Histogram histogram = sqlStat.getHistogram();
Assert.assertEquals(1, histogram.getSum());
Assert.assertEquals(1, sqlStat.getHistogramSum());
Histogram rsHoldHistogram = sqlStat.getExecuteAndResultHoldTimeHistogram();
Assert.assertEquals(1, rsHoldHistogram.getSum());
Assert.assertEquals(1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
}
static class MyMockPreparedStatement extends MockPreparedStatement {
@@ -66,17 +66,16 @@ public class StatFilterResultSetMultiCloseTest extends TestCase {
sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
Assert.assertNotNull(sqlStat);
Histogram histogram = sqlStat.getExecuteAndResultHoldTimeHistogram();
Assert.assertEquals("first failed", 1, histogram.getValue(0) + histogram.getValue(1) + histogram.getValue(2));
Assert.assertEquals("first failed", 1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
rs.close();
Assert.assertEquals("second failed", 1, histogram.getValue(0) + histogram.getValue(1) + histogram.getValue(2));
Assert.assertEquals("second failed", 1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
stmt.close();
conn.close();
Assert.assertEquals(1, histogram.getValue(0) + histogram.getValue(1) + histogram.getValue(2));
Assert.assertEquals(1, sqlStat.getExecuteAndResultHoldTimeHistogramSum());
}
}
@@ -0,0 +1,33 @@
package com.alibaba.druid.stat;
import java.lang.management.ManagementFactory;
import java.text.NumberFormat;
import junit.framework.TestCase;
public class JdbcSqlStatTest extends TestCase {
private JdbcSqlStat item;
public void test_0() throws Exception {
item = new JdbcSqlStat("");
gc();
long memoryStart = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
final int COUNT = 1024 * 1024;
JdbcSqlStat[] items = new JdbcSqlStat[COUNT];
for (int i = 0; i < COUNT; ++i) {
items[i] = new JdbcSqlStat("");
// items[i] = Histogram.makeHistogram(20);
}
long memoryEnd = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
System.out.println("memory used : " + NumberFormat.getInstance().format(memoryEnd - memoryStart));
}
private void gc() {
for (int i = 0; i < 10; ++i) {
System.gc();
}
}
}