Main BLOGGER
Google
WWW THIS BLOG
Tuesday, December 27, 2005
 
Java Memory Control
1. Weak Object References
Manage memory effectively with Java reference objects

///MemoryBlock.java
public class MemoryBlock {
int id;
int size;
byte[] block;

public MemoryBlock( int id, int size ) {
this.id = id;
this.size = size;
block = new byte[size];
System.out.println( "MemoryBlock created: "+this );
}

public String toString() {
return "{id="+id+",size="+size+"}";
}

protected void finalize() {
System.out.println( "MemoryBlock finalized: "+this );
}

}
//MyReference.java
import java.lang.ref.*;

public class MyReference extends SoftReference<MemoryBlock> {
public MyReference( MemoryBlock referent ) {
super( referent );
}

public MyReference( MemoryBlock referent, ReferenceQueue<MemoryBlock>q ) {
super( referent, q );
}

public String toString() {
return String.valueOf(get());
}

}

///MemoryTest1.java
import java.util.*;


public class MemoryTest1 {
public static void main( String[] args ) {
ArrayList<MemoryBlock> blocks = new ArrayList<MemoryBlock>();
int size = 65536;
for ( int id=0; true; id++ ) {
blocks.add( new MemoryBlock(id,size) );
System.out.println( "blocks: "+blocks );
size *= 2;
}
}

}
///MemoryTest2.java
import java.lang.ref.*;

import java.util.*;


public class MemoryTest2 {
public static void main( String[] args ) {
ArrayList<MyReference> blocks = new ArrayList<MyReference>();
int size = 65536;
for ( int id=0; true; id++ ) {
blocks.add( new MyReference(new MemoryBlock(id,size)) );
System.out.println( "blocks: "+blocks );
size *= 2;
}
}

}



2.
Java reference objects make caching easy



<< Home

Powered by Blogger

Google
WWW THIS BLOG