public static void main(String[] args) {
StringBuffer sb=new StringBuffer("Hale");
System.out.print(sb); // StringBuffer obyekti eligible deyil.
sb=null; // StringBuffer obyekti eligible-dir.
Runtime class-i yegane objesi (Singleton) olan xususi 1 class-dir her 1 main program ucun.Runtime obyekti JVM ile bilavasite elaqeni temin edir.Runtime obyektini almaq ucun Runtime.getRuntime() metodunu istifade etmek lazimdir,hansiki Singleton qaytarir.GC-ni cagirmaq ucun gc() metodu istifade edilir.Bu metodu System class-i uzerindende cagirmaq olar,hansiki static olan 1 metoddur.
System.gc();
public class CheckGC {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();
System.out.println(“Total JVM memory: ” + rt.totalMemory());
System.out.println(“Before Memory = ” + rt.freeMemory());
Date d = null;
for (int i = 0; i < 10000; i++) {
d = new Date();
d = null;
}
System.out.println(“After Memory = ” + rt.freeMemory());
System.gc();
System.out.println(“After GC Memory = “+ rt.freeMemory());
}
}
Runtime rt = Runtime.getRuntime();
System.out.println(“Total JVM memory: ” + rt.totalMemory());
System.out.println(“Before Memory = ” + rt.freeMemory());
Date d = null;
for (int i = 0; i < 10000; i++) {
d = new Date();
d = null;
}
System.out.println(“After Memory = ” + rt.freeMemory());
System.gc();
System.out.println(“After GC Memory = “+ rt.freeMemory());
}
}
//Console
Total JVM memory: 5177344
Before Memory = 4660704
After Memory = 4403968
After GC Memory = 5011864
Before Memory = 4660704
After Memory = 4403968
After GC Memory = 5011864
Java Gc terefinden obyektleri silmemisden evvel finalize () adli metodu istifade edir.hansiki butun classlar Obyekt class-dan onu inherit edir.Obyekt class-daki finalize () metodu 1 objenin referansi qalmadigi zaman gc terefinden cagirilir.System class-daki gc() metodu GC-ni calisdirir.System.gc() cagirilmasi ile Runtime.getRuntime().gc() cagirilmasi eynidir.Ancaq finalize() metodunu override etmek meslehet gorulmur.
Umumiyyetle GC-nin avantaji :
- Programci yaddas idaresinden asili olmadan program yazabiler.
- yaddas idaresi ucbatindan program cokmez.
- Sisteme cox yuk getirir.
- GC-nin ne zaman calisacagi tam olaraq bilinmir.
Hiç yorum yok:
Yorum Gönder