Java da depolanan (Storage) veriler nerede durur
Java da depolanan (Storage) veriler nerede duruyor ?
Depo, toplam 6 alandan oluşur
A) Register
B) Stack
C) Heap
D) Statik Alan
E) RAM Bellek
F) Non-RAM Bellek


1 ) Streamed Objects
2 ) persistent Objects

Java da depolanan (Storage) veriler nerede durmakta ?
Depo, toplam 6 alandan oluşur , Bu 6 alanı açıklarsak :
Register : En hızlı alan burasıdır .Bu alan Cpu nun içinde bulunur , ve derleyicinin(compiler) ihtiyaclarına gore pay edilir . Bu alanda bizim direk bir kontrolumuz yoktur.
Stack : Bulunduğu nokta RAM (random-access memory) dır . Bu alanda bulunan stack pointer ına direk olarak Cpu dan destek vardır . Stack pointer aşağıya inince yeni bir hafiza alanı oluşturur , yukarı kalkınca ise hafızayı alanını bırakır(release) . Java derleyicisi programı oluşturmadan evvel , stack üzerinde oluşturulacak olan verilerin boyutlarını ve ömürlerini (lifetime) bilmek zorundadır çünkü stack pointer i aşağı ve yukarı hareket ettirecek olan kodu oluşturması gerekmektedir . Stack üzerinde referansların kendileri bulunur.
Heap : Burası genel amaçlı bir hafıza havuzudur . Stack alanının tersine , derleyici burada ne kadar hafıza pay edileceğini bilmek zorunda değildir .Bu büyük bir rahatlık getirmektedir çünkü ne zaman bir obje yaratmak istersek sadece new anahtar kelimesini kullanarak bu alanda bir yer kendimize tahsis etmiş oluruz .Bu kadar rahatlığın karşılığında ise ödenmesi gereken fatura hızdır . Heap de yer ayırmak icin harcanan zaman , stack alanında yer ayırmaktan daha fazladır.Heap de objelerin kendisi durur.
Statik Alan : Bu alanda RAM de bulunur.Statik alanda yer alan veriler , programın çalışması süresince orada yaşarlar . Tüm objeler bu statik verileri görebilirler , ortak bir alan gibi düşünebiliriz . Veriyi statik yapmak icin static kelimesini değişkenin önüne getirmemiz yeterli olur . Objelerin kendileri bu alanda yer almazlar.
Sabit Bellek : Programın içindeki sabit değerlerin içinde bulundukları yerdir . Tercihen ROM(read only memory) da da yer alabilirler .
Non-RAM Bellek : Bazı durumlarda uyguların içersinde oluşturduğumuz objelerin,uygulama sonlandıktan sonra bile varlıklarını sürdürmelerini isteriz.
1 ) Akışkan Objeler (streamed objects) : Bu objeler , genellikle ağ(network) üzerindeki başka bir makinaya gönderilmek üzere byte akıntılarına dönüştürülürler.
2 ) Kalıcı Objeler ( persistent objects) : Bu objeler kendi durumlarını(state) saklarlar ve diskimizde saklanırlar . Kendi durumlarını saklamaktan kasıt ise özelliklerinin(attribute) değerlerinin korunmasıdır
KAYNAK: Java Kitap Projesi