optimized memory used

This commit is contained in:
wenshao
2012-10-08 09:27:08 +08:00
parent 5088fa8a34
commit f551328636
10 changed files with 451 additions and 231 deletions
@@ -0,0 +1,33 @@
package com.alibaba.druid.stat;
import java.lang.management.ManagementFactory;
import java.text.NumberFormat;
import java.util.concurrent.atomic.AtomicLong;
import junit.framework.TestCase;
public class AtomicMemoryTest extends TestCase {
public void test_0() throws Exception {
AtomicLong item = new AtomicLong();
gc();
long memoryStart = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
final int COUNT = 1024 * 1024;
AtomicLong[] items = new AtomicLong[COUNT];
for (int i = 0; i < COUNT; ++i) {
items[i] = new AtomicLong();
// 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();
}
}
}
@@ -0,0 +1,34 @@
package com.alibaba.druid.stat;
import java.lang.management.ManagementFactory;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
public class HashMapMemoryTest extends TestCase {
public void test_0() throws Exception {
HashMap item = new HashMap();
gc();
long memoryStart = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
final int COUNT = 1024 * 1024;
Map[] items = new Map[COUNT];
for (int i = 0; i < COUNT; ++i) {
items[i] = new HashMap();
// 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();
}
}
}
@@ -0,0 +1,38 @@
package com.alibaba.druid.stat;
import java.lang.management.ManagementFactory;
import java.text.NumberFormat;
import java.util.concurrent.atomic.AtomicLong;
import junit.framework.TestCase;
public class MemoryTest extends TestCase {
public void test_0() throws Exception {
A item = new A();
gc();
final int COUNT = 1024 * 1024;
A[] items = new A[COUNT];
long memoryStart = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
for (int i = 0; i < COUNT; ++i) {
items[i] = new A();
// 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();
}
}
public static class A {
private volatile long v;
}
}
@@ -0,0 +1,56 @@
package com.alibaba.druid.stat;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
import junit.framework.TestCase;
public class PerfTest extends TestCase {
public void test_0() throws Exception {
for (int i = 0; i < 3; ++i) {
long startMillis = System.currentTimeMillis();
a();
long millis = System.currentTimeMillis() - startMillis;
System.out.println("a : " + millis);
}
}
private void a() {
A a = new A();
for (int i = 0; i < 1000 * 1000 * 1000; ++i) {
a.incrementAndGet();
}
}
private void b() {
B b = new B();
for (int i = 0; i < 1000 * 1000 * 1000; ++i) {
b.incrementAndGet();
}
}
public static class A {
private volatile long value;
static final AtomicLongFieldUpdater<A> updater = AtomicLongFieldUpdater.newUpdater(A.class, "value");
public long incrementAndGet() {
return updater.incrementAndGet(this);
}
public long getValue() {
return value;
}
}
public static class B {
private final AtomicLong value = new AtomicLong();
public long incrementAndGet() {
return value.incrementAndGet();
}
}
}
@@ -10,7 +10,7 @@ import com.alibaba.druid.support.http.stat.WebSessionStat;
public class WebSessionStatTest extends TestCase {
public void test_0() throws Exception {
WebSessionStat item = new WebSessionStat("");
WebSessionStat item = new WebSessionStat("1b959a6db8489c4c7ef7bf0bd743ab52");
gc();
long memoryStart = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
@@ -18,6 +18,7 @@ public class WebURIStatMemoryTest extends TestCase {
WebURIStat[] items = new WebURIStat[COUNT];
for (int i = 0; i < COUNT; ++i) {
items[i] = new WebURIStat("");
items[i].getProfiletat();
// items[i] = Histogram.makeHistogram(20);
}