Java iş görüşmesi test siteleri açıklanmıştır (Temel Bölüm 02), okuduktan sonra hiçbir şey öğrenmediyseniz lütfen bana gelin!

1. İki nesnenin hashCode'u aynıysa, eşittir de doğru olmalıdır, değil mi?

Hayır, cevap aşağıdaki kodda:

@Override public int hashCode () { dönüş 1; }

İki nesne eşitse doğruysa, hashCode aynı olmalıdır, değil mi?

Bu parça kesinlikle tartışmalı. Görüşme sırasında cevap şudur: Resmi tasarım gereksinimlerine göre kodlarsanız, hashcode eşit olmalıdır. Bununla birlikte, resmi tasarım gerekliliklerine uyulmaması ve hashcode yöntemi yeniden yazılmaması halinde eşitsizlik olacaktır.

2. Java iş parçacığı havuzunu hiç kullandınız mı?

Yürütücüler, iş parçacığı havuzları oluşturmak için dört yöntem sağlar.

  • newFixedThreadPool (): Sabit boyutlu bir iş parçacığı havuzu oluşturun.
  • newCachedThreadPool (): Sınırsız boyutta bir iş parçacığı havuzu oluşturun İş parçacığı havuzundaki iş parçacığı sayısı sabit değildir ve gereksinimlere göre otomatik olarak değiştirilebilir.
  • newSingleThreadPool (): İş parçacığı havuzunda yalnızca bir iş parçacığı bulunan tek bir iş parçacığı havuzu oluşturun.
  • newScheduledThreadPool (), görevleri gecikmeli veya zamanlanmış bir şekilde yürütebilen sabit boyutlu bir iş parçacığı havuzu oluşturur.
  • El yazısı:

    public static void main (String args) { ExecutorService threadPool = Executors.newCachedThreadPool (); threadPool.execute (() - > { for (int i = 0; i < 20; i ++) { System.out.println (Thread.currentThread (). GetName () + ":" + i); } }); threadPool.shutdown (); }

    İş parçacığı havuzu işlevi

  • Sistemin yavaş çalışmasına veya çökmesine neden olacak çok fazla iş parçacığını önlemek için iş parçacığı sayısını sınırlayın.
  • Sık sık oluşturup yok etmenize, kaynakları korumanıza ve daha hızlı yanıt vermenize gerek yok.
  • 3. Math.round (-2.5) neye eşittir?

    Yuvarlandığını düşünmeyin, yuvarladığını sanmayın yuvarlandığını düşünmeyin!

    Mantra: +0.5'ten sonra yuvarlayın. Yani sonuç -2.

    Bir soru bırakın, Math.round (-2.6) sonucu ve Math.round (2.6) sonucu

    4. Nesne yönelimli altı ilke

  • Tek sorumluluk ilkesi-SRP
  • Her sınıfın kendi yöntemlerine konsantre olmasına izin verin.

  • Açılma ve kapanma prensibi-OCP
  • Yazılımdaki nesneler (sınıflar, modüller, işlevler vb.) Genişletmeye açık olmalı, ancak değişiklik için kapalı olmalıdır.

  • Li ikame ilkesi-LSP
  • Alt sınıf, ana sınıfı genişletebilir, ancak ana sınıfın orijinal işlevini değiştiremez.

  • Bağımlılık ters çevirme ilkesi-DIP
  • Uygulama sınıfını (ayrıntılar) çağırmak yerine arayüzü veya soyut sınıfı (daha yüksek seviye) çağırmalıdır.

  • Arayüz izolasyon prensibi-ISP
  • Arayüzü, bağımlılığı karşılayan en küçük arayüze bölün ve uygulama sınıfında gereksiz yöntemler olamaz.

  • Dimit prensibi-LOD
  • Yüksek kohezyon, düşük bağlantı.

    5. Statik ve nihai arasındaki fark

    6. String s = "merhaba" ve String s = new String ("merhaba"); Fark

    String s = new String ("merhaba"); İki nesne veya bir nesne oluşturmak mümkündür. Sabit havuzda bir merhaba dizesi sabiti varsa, yığın içinde yalnızca bir nesne oluşturulur. Sabit havuzda merhaba nesnesi yoksa hem yığın hem de sabit havuzun oluşturulması gerekir.

    String s = "merhaba", JVM, dize sabit havuzunda bir "merhaba" dize nesnesi olup olmadığını doğrudan kontrol edecek, yoksa "merhaba" depolamak için bir bellek ayıracak, öyleyse, dizeyi doğrudan depolayacaktır. Sabit havuzdaki adres yığına döndürülür. (Yeni yok, yığın işlemi yok)

    7. Başvuru türü kaç bayt kaplar?

    Hotspot, 64 bit platformda 8 bayt ve 32 bit platformda 4 bayt kaplar.

    8. "(1 < 3)? "A": "b") + 3 + 4` ve `(1 < 3)? "A": "b") + (3 + 4) `fark

    System.out.println (((1 < 3)? "A": "b") + 3 + 4); System.out.println (((1 < 3)? "A": "b") + (3 + 4));

    Konsol:

    a34 a7

    8.1 Hangi koşullar altında artı işareti bir dize birleşimi haline gelir?

    Yukarıdaki örneğe göre düşünün.

    9. Java'daki anahtar seçim yapısı, veri türü verilerini kullanabilir (JDK1.8)

  • kömür
  • bayt
  • kısa
  • int
  • Karakter
  • Bayt
  • Kısa
  • Tamsayı
  • Dize
  • Sıralama
  • Daha iyi bellek yöntemi:

    Temel tipler arasında boole ve kayan nokta tipi + uzun tip uzun yoktur, karşılık gelen bir paketleme tipi yoktur.

    Artı String ve enum.

    10. "45, 4 ^ 5,, 410 > > 1` ne kadar eşittir

    // 0100 ve 0101 = 0100 = 4 System.out.println (45); // 0100 ^ 0101 = 0001 = 1 System.out.println (4 ^ 5); System.out.println (10 > > 1); // Şüpheniz varsa, aşağıdaki operatör önceliğine bakın System.out.println (410 > > 1); 41 54

    "4 | 5" ne kadar

    Cevap: 5

    Operatör Önceliği

    11. Neden bazı java sınıflarının Serializable arayüzü uygulaması gerekiyor?

    Ağ iletimi veya kalıcılığı için

    Serileştirme nedir

    Bir nesnenin durum bilgisini saklanabilen veya iletilebilen bir forma dönüştürme süreci

    Serileştirilebilir arabirimi uygulamaya ek olarak, başka hangi serileştirme yöntemleri

    • Json serileştirme
    • FastJson serileştirme
    • ProtoBuff serileştirme

    12. JVM çöp imha yöntemi

    İşaretle ve süpür algoritması (eski nesil)

    Algoritma iki aşamaya ayrılmıştır: "işaretleme" ve "temizleme": ilk olarak geri dönüştürülmesi gereken tüm nesneleri işaretleyin (erişilebilirlik analizi) ve işaretlemeden sonra tüm işaretli nesneleri eşit şekilde temizleyin.

    Algoritmanın iki sorunu vardır:

  • Verimlilik sorunu, markalama ve çıkarma verimliliği yüksek değildir.
  • Boşluk sorunu: İşaret temizlendikten sonra, çok sayıda süreksiz bellek parçası üretilecektir.Çok fazla alan parçalanması, işlem sırasında büyük nesnelerin tahsis edilmesi gerektiğinde ve başka bir çöp toplama işleminin önceden tetiklenmesi gerektiğinde yetersiz sürekli belleğin bulunmasına neden olabilir.
  • Bu yüzden genellikle "yaşlılık gibi çok fazla çöpün olmadığı alanlarda" kullanılır.

    Kopyalama algoritması (yeni nesil)

    Algoritmanın özü, kullanılabilir belleği kapasiteye göre eşit büyüklükte iki parçaya bölmektir.Her seferinde sadece bir parça kullanılır.Bu bellek parçası kullanıldığında, kalan nesneler (çöp değil) diğer parçaya kopyalanır ve ardından Kullanılmış bellek alanını bir defada temizleyin.

    Avantajlar: Parçalanma problemini dikkate almaya gerek yoktur, yöntem basit ve etkilidir.

    Dezavantajlar: ciddi hafıza kaybı.

    Yeni nesil modern ticari VM'lerin tümü replikasyon algoritmasını kullanıyor, ancak yeni nesildeki nesnelerin% 98'i son derece kısa yaşam döngülerine sahip olduğundan, yeni neslin alanını tam olarak 1: 1 oranında bölmek değil, yeni nesil alanı bölmek gerekiyor. Daha büyük bir Cennet alanına ve iki daha küçük Survivor alanına bölünmüş (HotSpot varsayılan olarak Eden ve Survivor boyut oranına 8: 1'dir), her seferinde sadece Eden ve Survivor alanlarından biri kullanılır.

    MinorGC meydana geldiğinde, Eden ve Survivor'daki hayatta kalan nesneleri bir seferde başka bir Survivor'a kopyalayın ve sonunda Eden ile Survivor arasındaki boşluğu temizleyin. Survivor alanı yeterli olmadığında (hayatta kalan nesneleri kurtarmak için yeterli değil), alan tahsis garanti mekanizması için eski nesile güvenmek gerekir ve belleğin bu kısmı doğrudan eski nesle girer.

    Kopyalama algoritması için alan tahsis garantisi:

    Minor GC yapmadan önce, VM ilk olarak eski nesilde yeni neslin hayatta kalan nesnelerini depolamak için yeterli alan olup olmadığını kontrol edecek.Yeni nesil kopya toplama algoritmasını kullandığından, bellek kullanımını iyileştirmek için Survivor'lardan yalnızca biri rotasyon yedeklemesi olarak kullanılıyor. Minor GC'den sonra çok sayıda nesne hala hayatta olduğunda, eski neslin garantileri tahsis edilmesi gerekir, böylece Survivor'un barındıramayacağı nesneler doğrudan eski nesle girer, ancak öncül, eski neslin bu hayatta kalan nesneleri barındırmak için yeterli alana sahip olması gerektiğidir.

    Ancak, hayatta kalan nesnelerin boyutu, gerçek GC tamamlanmadan önce net bir şekilde bilinemez. Bu nedenle, Küçük GC'den önce, VM ilk olarak eski neslin sürekli alanının yeni nesil nesnelerin toplam boyutundan veya önceki yükseltmelerin ortalama boyutundan daha büyük olup olmadığını kontrol edecektir. Koşullar doğruysa devam edin. Minor GC, aksi takdirde Full GC (eski nesil için daha fazla yer açmak için).

    Bununla birlikte, terfi edilen nesnelerin ortalama boyutunun alınması da risklidir.Belirli bir Küçük GC'den sonra nesnelerin sayısı ortalamanın çok üzerinde bir anda artarsa, yine de bir garanti arızasına neden olabilir (Taşıma Promosyon Başarısızlığı, yaşlılık saklanamaz. Bu nesneler), şu anda, başarısızlıktan sonra bir Tam GC'yi yeniden başlatmalıyız (eski nesil için daha fazla yer açmak için).

    İşaretleme sıralama algoritması (eski nesil)

    İşaret kaldırma algoritması, bellek parçalanma problemleri oluşturacaktır ve kopyalama algoritması ek bellek garanti alanına ihtiyaç duyar, bu nedenle yaşlılığın özelliklerine göre bir işaret sıralama algoritması vardır.İşaret sıralama algoritmasının markalama işlemi, işaret temizleme algoritması ile aynıdır, ancak sonraki adımlar Ardından geri dönüştürülebilir nesneleri doğrudan temizleyin, ancak hayatta kalan tüm nesnelerin bir uca hareket etmesine izin verin ve ardından son sınırın dışındaki belleği temizleyin.

    13. Genç, yaşlı ve ısrarcı nesillerde neler saklanır?

    Yeni nesil:

  • Yöntemdeki yeni nesne ilk olarak yeni nesile girecektir.
  • İleri yaş:

  • Yeni nesilde N çöp koleksiyonundan kurtulan nesneler eski nesile yerleştirilecek.
  • Büyük nesneler genellikle doğrudan yaşlılığa yerleştirilir.
  • Survivor'da yer kalmadığında. Yaşlılığın bir miktar alanı garanti etmesi gerekiyor ve nesne yaşlılığa yerleştirilecek.
  • Kalıcı nesil:

    Yöntem alanını ifade eder.

    14. Ulaşılabilirlik algoritmasında, GC Roots nesneleri olarak hangi nesneler kullanılabilir?

  • Sanal makine yığınında başvurulan nesneler
  • Yöntem alanının statik üyeleri tarafından başvurulan nesneler
  • Yöntem alanı sabiti referans nesnesi
  • Yerel yöntem yığını JNI tarafından başvurulan nesneler
  • 15. MinGC ve FullGC ne zaman yapılmalı

    MinGC:

  • Eden alanı dolduğunda, Minor GC tetiklenir.
  • FullGC:

  • System.gc çağrılırken, sistem Full GC yapılmasını önerir, ancak zorunlu değildir
  • Yaşlılıkta yetersiz alan
  • Yetersiz yöntem alanı
  • Minor GC'den geçtikten sonra eski neslin ortalama boyutu, eski neslin kalan alanından daha büyüktür.
  • Yığın içinde büyük nesneler tahsis edilir ve eski nesilde yeterli alan yoktur
  • 16. Nesnenin bir çöp nesnesi olduğu nasıl belirlenir

    Java dünyasındaki hemen hemen tüm nesne örnekleri yığın içinde depolanır.Çöp toplayıcı öbeği geri istemeden önce, ilk şey hangi nesnelerin ölü (geri dönüştürülebilir) olduğunu belirlemektir.

    Referans sayma

    JDK1.2'den önce referans sayaç algoritması kullanılıyordu.

    Nesneye bir referans sayacı ekleyin Bu nesneye bir referans olduğunda, referans sayacının değeri +1 olacaktır. Referans geçersiz olduğunda sayacın değeri -1 olacaktır. Referans sayacı sıfıra düştüğünde işaretler Bu nesneye artık referans verilmiyor ve geri dönüştürülebilir!

    sorun: B sınıfının yöntemi A sınıfında çağrılırsa, A sınıfının yöntemi B sınıfında çağrılır, böylece diğer tüm referanslar ortadan kalktığında, A ve B ortak bir referansa sahip olur, yani iki nesnenin referans sayacı Her biri 1'dir, ancak aslında bu iki nesnenin ek başvuruları yoktur ve anlamsızdır. Ancak algoritma bu tür çöpleri hesaplamaz.

    Erişilebilirlik analizi

    Yaygın ticari dillerin (Java, C # gibi) genel uygulamasında, erişilebilirlik analizi algoritması, nesnenin canlı olup olmadığını belirlemek için kullanılır: Başlangıç noktası olarak GC Kökleri adı verilen bir dizi nesne kullanılır ve ardından aşağı doğru arama yapılır; Geçilen yola Referans Zinciri denir.Bir nesne herhangi bir referans zinciri olmadan GC Köklerine bağlandığında, nesneye erişilemez, bu da aşağıdaki şekilde gösterildiği gibi nesnenin kullanılamadığı anlamına gelir: E ve F birbiriyle ilişkili olmasına rağmen , Ancak GC Roots'a erişilemezler, bu nedenle geri dönüştürülebilir nesneler olarak da değerlendirilirler.

    Not: Nesne erişilebilirlik analizi algoritmasında erişilemez olsa bile, sanal makine onu hemen geri talep etmez, çünkü bir nesneyi gerçekten ölü ilan etmek için en az iki işaretleme sürecinden geçmelidir: ulaşılabilirlik analizinden sonra nesnenin olmadığı ilk kez bulunursa GC Roots'a bağlı referans zinciri, ikinci kez F-Queue yürütme kuyruğundaki nesnelerin GC tarafından küçük ölçekli işaretlenmesidir (nesnenin finalize () yöntemini kapsaması gerekir ve çağrılmamıştır).

    17. Birkaç çöp toplayıcı isim verebilir misiniz?

    Seri

    Seri toplayıcı, İstemci modunda çalışan Hotspot'tur Varsayılan genç nesil toplayıcı , Çöp toplama gerçekleştirirken, tüm iş süreçlerini askıya alacak ve GC çalışmasını tamamlamak için bir iş parçacığı kullanacaktır.

    Özellikler: Basit ve verimli, JVM yönetim belleğinin büyük olmadığı durumlar için uygundur (on megabayt ila 100 megabayt).

    Parnew

    ParNew toplayıcı aslında Serial'ın çok iş parçacıklı bir versiyonudur.Geri dönüşüm stratejisi tamamen aynı, ancak farklılar.

    Parnew'in çok iş parçacıklı bir gc koleksiyonu olduğunu, yani çok çekirdekli bir cpu ile daha iyi çalıştığını, bir cpu ise aynı etkiye sahip olacağını söyledik. (GC iş parçacığı sayısı -XX: ParallelGCThreads parametresi ile kontrol edilebilir)

    Cms

    CMS (Concurrent Mark Sweep) toplayıcı çığır açan bir toplayıcıdır. Gerçek anlamda eşzamanlı toplayıcı Teorik anlamda daha iyi performans gösteren G1 toplayıcıları olmasına rağmen, birden fazla eşzamanlılık ve düşük duraklama ile toplayıcı olarak da bilinen CMS (Taobao gibi), ana akım İnternet şirketleri tarafından hala çevrimiçi olarak kullanılmaktadır.

    Mark süpürme algoritmasına dayalı olarak uygulandığı İngilizce kompozisyonundan görülebilir. Tüm süreç 4 adıma bölünmüştür:

  • CMS ilk işareti: Yalnızca GC Roots'un doğrudan ilişkilendirebileceği nesneleri işaretleyin, bu çok hızlıdır
  • Eşzamanlı işaret (CMS eşzamanlı işareti: GC Kök İzleme süreci)
  • CMS açıklaması: Eşzamanlı işaretleme sırasında kullanıcı programının devam eden çalışması nedeniyle işareti değişen nesnenin parçasının işaret kaydını düzeltin
  • Eşzamanlı süpürme (CMS eşzamanlı tarama: ölü nesneler yerinde bırakılacaktır)
  • İlk işaretleme ve yeniden işaretlemenin STW (dünyayı durdur, yani: kullanıcı dizisini askıya al) işlemini gerektirdiği görülebilir. Çünkü en çok zaman alan işlemler eşzamanlı işaretleme ve eşzamanlı kaldırmadır. Bu nedenle, genel olarak, CMS'nin GC ve kullanıcı iş parçacıklarının aynı anda çalıştığına inanıyoruz.

    avantaj: Eşzamanlı toplama, düşük duraklama

    Dezavantajları:

  • Varsayılan olarak CMS tarafından başlatılan geri dönüşüm iş parçacığı sayısı = (CPU sayısı + 3) * 4
  • CPU sayısı > Saat 4 konumunda, GC iş parçacıkları CPU kaynaklarının en fazla% 25'ini kaplar, ancak CPU sayısı arttığında < = 4, GC iş parçacığı kullanıcının CPU kaynaklarını çok fazla işgal ederek uygulamanın yavaşlamasına ve genel iş hacminin azalmasına neden olabilir.
  • Kayan çöp (GC eşzamanlı temizleme aşamasına geçtiğinde kullanıcı iş parçacıkları tarafından üretilen çöp) temizlenemiyor çünkü kullanıcı iş parçacıkları belleğe ihtiyaç duyarsa. Yüzen çöp zamanında serbest bırakılmazsa bellek taşmasına neden olabilir, bu nedenle CMS diğer çöp toplayıcılar gibi olamaz Bu şekilde, tetiklemeden önce yaşlılığın neredeyse dolmasını bekleyin. CMS, GC tetikleme yüzdesini ayarlamak için -XX: CMSInitiatingOccupancyFraction parametresini sağlar (1.6'dan sonra varsayılan% 92'dir). Elbette, -XX: + UseCMSInitiatingOccupancyOnly politikasını ayarlamalı ve etkinleştirmeliyiz
  • CMS bir mark süpürme algoritması kullandığından, çok fazla parçalanma getirebilir.Çok fazla parça varsa ve temizlenmemişse, jvm, büyük nesne belleğini ayıramadığından GC'yi tetikleyecektir.Bu nedenle CMS, -XX: + UseCMSCompactAtFullCollection parametresini sağlar. GC yürütüldükten sonra, birleştirme gerçekleştirilir, ancak bir sorun olacaktır. Birleştirme eşzamanlı olamaz, bu nedenle tek bir iş parçacığında işlenmelidir. Bu nedenle, kullanıcı iş parçacığı durma süresi, GC her tamamlandığında birikirse, XX: CMSFullGCsBeforeCompaction Parametre, birkaç GC'de bir birleştirilecek şekilde ayarlanır (varsayılan 0'dır).
  • G1

    Mükemmel CMS çöp toplayıcı gibi, G1 de en küçük gecikmeye odaklanan bir çöp toplayıcıdır ve aynı zamanda büyük boyutlu yığın belleğinin çöp toplama işlemi için de uygundur.Resmi tavsiye, CMS'yi seçmek yerine G1'i kullanmaktır. G1'in en büyük özelliği Bölüm tanıtın Fikirler, Zayıf nesil Her bir çöp toplama döngüsünde kaynakların akılcı kullanımı kavramı, diğer toplayıcıların ve hatta CMS'nin birçok eksikliğini çözer.

    Her alan E, S ve O nesillerine sahip olduğu için G1'de, tüm Eden'i ve diğer nesilleri geri almaya gerek yoktur, daha fazla geri dönüştürülebilir nesneler içeren alanlar bulup bunları geri kazanmaya gerek yoktur (STW işlemleri de gerekli olsa da, ancak Yüksek verim sağlamak için harcanan zaman çok azdır.

    Senozoik koleksiyon

    G1'in yeni nesil koleksiyonu ParNew'e benziyor, eğer hayatta kalma süresi belirli bir eşiği aşarsa, S / O alanına aktarılacaktır.

    Genç nesil bellek, bir dizi kesintili yığın alanından oluşur.Bu yöntem, her bir oluşturma alanının boyutunu dinamik olarak ayarlamayı mümkün kılar.

    Eski koleksiyon

    Aşağıdaki aşamalara ayrılmıştır:

  • İlk İşaret (İlk İşaret: Dünya Etkinliğini Durdur)
  • G1'de, bu işlem Survivor'da eski nesil nesnelere atıfta bulunabilecek bölgeleri işaretlemek için genç nesil bir GC ekler.
  • Kök Bölge Taraması (Kök Bölge Taraması: uygulama ile eşzamanlı yürütme)
  • Scan Survivor, eski neslin referanslarına başvurabilir. Ancak, Minor GC tetiklenmeden önce yürütülmesi gerekir
  • Eşzamanlı İşaretleme (Eşzamanlı İşaretleme: uygulama ile eşzamanlı yürütme)
  • Tüm yığın içinde canlı nesneleri bulun, ancak bu aşama Minor GC tarafından kesintiye uğrayabilir.
  • Açıklama (Not: World Event'i Durdurun)
  • Yığın belleğindeki hayatta kalan nesnelerin işaretlemesini tamamlayın.CMS tarafından kullanılan algoritmadan çok daha hızlı olan başlangıçta anlık görüntü (SATB, ilk anlık görüntü) algoritmasını kullanın (boş bölgeler doğrudan kaldırılır ve geri dönüştürülür ve tüm bölgelerin etkinliği hesaplanır. derece).
  • Temizleme (Temizleme: Dünya Olayını Durdur ve Eşzamanlı)
  • İstatistikler gerçekleştirin (STW) ve canlı nesneler içeren ve tamamen ücretsiz olan alanlarda Hatırlanan Kümeleri silin (tüm yığını taramaktan kaçınmak için Hatırlanan Kümeyi kullanın, her alanda referans bilgilerini kaydetmek, işlem kayıtlarını okumak ve yazmak için karşılık gelen bir Küme bulunur) STW), boş bölgeleri sıfırlayın ve bunları boş listeye geri döndürün (Eşzamanlı)
  • 18. JVM'de nesne oluşturma süreci

    1. Bellek oluşturma talimatını alın

    Sanal makine bir bellek oluşturma talimatıyla (yeni sınıf adı) karşılaştığında, yöntem alanına gelir ve yeni parametreye bağlı olarak sabit havuzda bir sınıf bulmak için bir sembol referansı bulur.

    2. Sembol referanslarını kontrol edin

    Sembol referansının yüklenip yüklenmediğini, ayrıştırılıp başlatılmadığını kontrol edin, değilse, sınıf yükleme işlemini gerçekleştirin, aksi takdirde doğrudan yeni nesne için bellek ayırmaya hazırlanın

    3. Belleği ayırın

    Sanal makine nesneler için bellek ayırır (yığın) Bellek ayırmanın iki yolu vardır (işaretçi çarpışması ve serbest liste); bellek ayırmak için eşzamanlılık güvenliğini sağlamanın iki yolu vardır.

    3.1. İşaretçi çarpışması

    Tüm depolama alanı iki kısma bölünmüştür, bir kısmı boş ve diğer kısmı dolu, alan tahsis edilmesi gerektiğinde, sadece ibre hareketinin uzunluğunun hesaplanması gerekir.

    3.2. Ücretsiz liste

    Sanal makine boş bir liste tutar ve alan ayırması gerektiğinde, tahsis için ücretsiz listeyi kontrol eder ve boş listeyi günceller.

    Bellek ayırma yönteminin java yığınının düzenliliğiyle belirlendiği ve java yığınının düzenliliğinin de çöp toplama mekanizması tarafından belirlendiği görülebilir.

    3.2.5 Güvenlik sorunları hakkında düşünme

    Bellek ayırma stratejisi işaretçi çarpışması ise, yüksek eşzamanlılık durumunda birden çok nesnenin bellek ayırması gerekiyorsa, işlenmezse, iş parçacığı güvenliği sorunları kesinlikle ortaya çıkacak ve bazı nesnelerin alan ayrılmamasına neden olacaktır.

    İşte çözüm:

    3.3 İş parçacığı senkronizasyon stratejisi

    Yani, iş parçacığı güvenliğini önlemek için her iş parçacığı senkronize edilir.

    3.4. Yerel iş parçacığı tahsis tamponu

    TLAB (İş Parçacığı Yerel Ayırma Tamponu) olarak da adlandırılır, eşzamanlılık sorunu olmaması için öbekteki her iş parçacığı için küçük bir bağımsız bellek parçası ayrılır.Java düzeyi, ThreadLocal sınıfının uygulanmasına karşılık gelir

    4. Başlatma

  • Bellek tahsis edildikten sonra, nesne başlığı (Nesne Başlığı) başlatılmalıdır Bu yeni bilgi şunları içerir: nesnenin karşılık gelen sınıfının meta verileri, nesnenin GC üretimi ve nesnenin karma kodu.
  • Soyut veri türü varsayılan olarak null olarak başlatılır, temel veri türü 0 ve boolean yanlıştır ...
  • 5. Nesnenin başlatma yöntemini çağırın

    Yani inşaat yöntemini uygulamaktır.

    Makale kaynağı: Pippi, herhangi bir ihlal varsa, silmek için lütfen iletişime geçin, teşekkür ederim.

    Başyapıt "Dönüştürülmüş Tank" listeleniyor! Ocak değiştir ücretsiz oyun duyuruldu
    önceki
    Günaydın Wuhan | 1 Eylül'den itibaren şehir, ikinci el konutlar için bir listeleme sistemi uygulamayı planlıyor
    Sonraki
    Philips, Brilliance 32 "4K LCD monitörü piyasaya sürdü
    Küçük ve güzel özelleştirilmiş turları giriş olarak alan "Makino Travel", aynı şehirdeki ilgi alanlarına dayalı bir sosyal platform olmak istiyor
    Hayatın görüntüsünü okumak, film ve televizyon yönetmenlerini dinlemek için bir ekran Philips 499P9H1 monitör hakkında konuşuyor
    Zhang Ling'in açıklaması Evler, kat mülkiyeti içindeki alanla alınıp satılıyor, ortak alan ortadan kalkacak mı? Konut fiyatı tapu vergisi ne olacak?
    Küçük tahta kralı geri döndü, ASUS ROG MAXIMUS XI GENE incelemesi
    Anneler Günü Film Listesi Onlar hakkında N video
    İtalya'nın Cuneo eyaletinde bir viyadük çöktü ve neredeyse iki askeri polisi ezdi
    Bir şakayık sapı yerleştirin, zamanın yavaşça akmasına izin verin
    70 ° Kuzey Enlem Nikon Z Murmansk Takip Işık Turu
    Tarıma uygun bir idol: "Cai Xukun" yapmak
    520, sevenler ve sevenler için
    CES, OLED fırtınasını başlattı LG Ekran, pek çok siyah teknoloji görmedi
    To Top