2014-11-04 21 views
6

JVM Teknik bahsedilen (JSE 8 Edition)JVM yığınında çerçeve ayrılmış mı, yoksa ayrılmış mı?

Sayfa 12: 2.5.2 JVM Karışımlar: "itmek ve pop çerçeveleri, çerçeveler yığın ayrılmış olması dışında JVM yığın doğrudan işletilen hiçbir zaman için"

Sayfa 15: 2.6: Çerçeveler: "Çerçeveler çerçeveyi oluşturan iş parçacığının JVM yığınından ayrılır." Ve on Page 16: "Bir iş parçacığı tarafından oluşturulan bir çerçevenin bu iş parçacığı için yerel olduğunu ve başka bir iş parçacığı tarafından başvurulan olamaz unutmayın."

Bu bana oldukça kafa karıştırıcı geliyor. Bir çerçeve çerçeveyi oluşturan iş parçacığı için yerel olduğundan, yığın tüm JVM iş parçacıklarının arasında paylaşıldığından, neden çerçeveyi yığında paylaştırıyorsunuz? Burada bir şey gözden kaçırılmadıkça anlam ifade etmiyor. Sayfa 12'deki cümle ilginç bir ifadedir.

Herhangi bir ipucu? Teşekkürler.

+0

"Tahsis edilen yığın olabilir", tahminim var, çünkü uygulama bağımlı ve JVM belirtiminden kaynaklanan herhangi bir sınırlama yok. JVM uygulayıcısı, yığını istediği şekilde uygulayabilme özgürlüğüne sahiptir. – kosa

cevap

3

JVM yığını bir soyutlamadır. Herhangi bir yere ya da hiçbir yere tahsis edilebilir. Örneğin. Bir yöntem JIT tarafından belirtilmişse, ayrı bir yığın karesi yoktur.

HotSpot JVM, JVM yığını olarak yerel thread yığınını kullanır. Ancak, Java Heap'ta JVM yığınlarını ayıran JVM uygulamaları (örneğin CLDC HI) vardır. Bu yaklaşımın yararı, iplik yığınları dahil olmak üzere her şey için tek bir bellek yönetimine sahip olmaktır. Böyle bir JVM, standart bellek yöneticisi (libc gibi) veya işletim sistemi olmayan bir platformda çalışabilir.

JVM Heap ayrıca bir soyutlamadır. JVM iş parçacıkları arasında yerel iş parçacığı yığınlarından daha "paylaşılmaz". Yığın iplik-yerel alanları da olabilir. Aynı zamanda yerel ileti dizileri, işlemin tüm iş parçacıkları arasında da paylaşılan sanal bellekte bulunur.

+0

Iyi bir arka plan giriş, ama henüz bu sorunun cevabına doğrudan ipucu yok ... –

+0

@ user1139247 Neden olmasın? * "JVM yığında çerçeve ayrılmış veya ayrılmış tahsis edilmiş?" * - Her iki tür JVM uygulamasının var olduğunu söyledim. En popüler olan HotSpot JVM, yerel yığınları kullanır. * Yığın, tüm JVM konuları arasında paylaşıldığından bu yana çerçeveyi neden ayırırız? * - Ayrıca, bu yaklaşımın yararlarından bahsetmiştim. – apangin

İlgili konular