Java Uygulaması Performans Ayarı ve Bellek Yönetimi
Eğitime BURADAN ulaşabilirisiniz.
Kodlama seçenekleri, kıyaslama, performans ayarı ve bellek yönetiminin Java uygulamalarınızı nasıl optimize edebileceğini keşfedin
Gereksinimler
Java programlamanın temel çalışma bilgisi gereklidir, ancak Java uzmanı olmanıza gerek yoktur!
Tanım
Bu kursta, uygulamalarımızda performans sorunlarına nelerin neden olabileceğini ve bunların nasıl çözüleceğini anlayacağız. Bu, tasarım zamanında geliştiriciler olarak bize sunulan seçeneklerden bazılarının gözden geçirilmesini içerir - optimum performans için iyi kodlama seçimlerinin nasıl yapılacağı. Örneğin, bir LinkedList yerine ne zaman bir ArrayList seçmelisiniz? StringBuilder gerçekten ne kadar fark yaratır? Belirli işlemlerde Lambda sözdizimi daha fazla veya daha az verimli midir? Ayrıca, bir dizi çalışma zamanı bağımsız değişkeni ile çalışma zamanında daha iyi performans sağlamak için sanal makineyi yapılandırabileceğimiz çeşitli yollar hakkında bilgi edineceğiz. Ayrıca, sanal makinenin belleği nasıl yönettiğini ve çöp toplama sürecinin nasıl çalıştığını ve uygulama performansını nasıl etkilediğini derinlemesine inceleyeceğiz.
Yol boyunca Tam Zamanında derleyici, performans testi ve kıyaslama, bayt kodunu çözme, GraalVM'yi alternatif bir sanal makine olarak kullanma ve daha fazlasını öğreneceğiz.
Java Sürümleri Hakkında: Bu, bu kursun ikinci tekrarıdır ve Java'nın uzun vadeli desteği olan tüm güncel sürümleri için tasarlanmıştır (Java 8 , Java 11 ve Java 17). Bu sürümlerden herhangi biriyle birlikte takip edebilirsiniz. Oracle veya OpenJDK JVM'leri de kullanabilirsiniz. Diğer JVM dillerini (Kotlin, Scala ve Groovy gibi) kullanan geliştiriciler için, bu kursun tüm JVM yapılandırma bölümleri hala geçerli olacaktır ve bazı kodlama seçeneklerinin de dikkate alınması faydalı olabilir. (Kotlin'in Java'dan daha iyi veya daha kötü performans sağlayıp sağlamadığına dair bir inceleme bile olduğunu unutmayın!)
Puan: 5 üzerinden 4,6
4.6
(3.526 puan)
28.993 öğrenci tarafından satın alındı ,
Son güncelleme 2/2022
İngilizce
Türkçe [Otomatik]
ne öğreneceksin
Uygulamalarımızda performans sorunlarına nelerin yol açabileceği ve bunların nasıl çözüleceği.
Tasarım zamanında geliştiriciler olarak bize sunulan seçenekler - optimum performans için iyi kodlama seçimlerinin nasıl yapılacağı.
Çalışma zamanında daha iyi performans sağlamak için sanal makine nasıl yapılandırılır.
JVM'nin Tam Zamanında derleyicisi.
Sanal makine belleği nasıl yönetir?
Performans testi ve kıyaslama
Ön izleme
04:00
Bu kursla birlikte verilen örnek kod
01:01
Farklı JDK ve JVM satıcıları kullanma
01:37
Ön izleme
05:11
Bu kursu alırken nasıl destek alabilirsiniz?
01:51
Ön izleme
03:03
Ön izleme
05:51
İlk örnek projenin tanıtılması
03:35
Uygulamalarımızda hangi yöntemlerin derlendiğini bulma
05:23
C1 ve C2 Derleyicileri ve derleme etkinliğinin günlüğe kaydedilmesi
04:43
Kod önbelleği boyutunu ayarlama
06:18
JConsole ile kod önbelleğini uzaktan izleme
08:29
Ön izleme
04:32
Çalışma zamanında hangi derleyicinin kullanılacağını belirleme
06:34
Katmanlı derleme kapatılıyor
02:04
Sanal Makine içinde yerel derlemeyi ayarlama
09:58
Ön izleme
02:57
Yığın nasıl çalışır?
05:56
yığın nasıl çalışır
05:25
Yığın ve yığın birlikte - bir örnek
07:46
"Değerine göre geçmek" ne anlama geliyor?
04:54
"Referans yoluyla geçmek" ne anlama geliyor?
02:20
Nesneleri yöntemlere geçirmek
04:13
Son anahtar kelime ve neden bir sabitle aynı şey olmadığı
03:09
final anahtar sözcüğü neden bir nesnenin değerlerinin değiştirilmesini durdurmuyor?
05:42
Egzersiz için talimatlar
01:35
Çözümün gözden geçirilmesi
08:46
Giriş - kaçış referansı nedir?
05:33
Strateji 1 - bir yineleyici kullanmak
07:31
Strateji 2 - koleksiyonları çoğaltma
06:54
Strateji 3 - değişmez koleksiyonları kullanma
04:38
Strateji 4 - nesneleri çoğaltma
05:06
Strateji 5 - değişmez nesneler oluşturmak için arabirimleri kullanma
04:39
Strateji 6 - uygulamayı gizlemek için modülleri kullanma
09:49
Egzersiz için talimatlar
04:40
Çözümün gözden geçirilmesi
07:39
Metaspace'in rolü
05:09
PermGen
01:58
Nesneler her zaman öbek üzerinde mi oluşturulur?
04:14
Dize Havuzu
06:08
Dahili Dizeler
03:03
Dize havuzu nasıl uygulanır?
04:10
Dize havuzunun boyutunu ve yoğunluğunu anlama
11:36
Dize havuzunun boyutunu ayarlama
03:28
Yığın boyutunu ayarlama
07:44
Yığın ayarlama bayrakları için kısayol sözdizimi
03:06
Ön izleme
04:57
Java, Öbek'ten hangi nesnelerin kaldırılabileceğini nasıl bilir?
02:49
System.gc() yöntemi
04:28
Java 11'in çöp toplayıcısı, kullanılmayan belleği işletim sistemine geri verebilir
03:52
System.gc() yöntemini çalıştırmak neden iyi bir fikir değil?
02:05
finalize() yöntemi
05:17
finalize() kullanmanın tehlikesi
03:28
Yumuşak sızıntı nedir?
08:51
(J)VisualVM Tanıtımı
06:58
Yığın boyutunun zaman içinde izlenmesi
02:59
Sorunu çözme ve yığın boyutunu kontrol etme
04:15
Yığın dökümü oluşturma
03:13
Bir yığın dökümü görüntüleme
05:20
Çöp toplayıcı, çöpün ne olduğunu nasıl anlar?
03:53
Yığın neden nesillere ayrılmıştır?
04:06
Genç Neslin İçselleri
05:00
Nesilleri VisualVM'de görüntüleme
06:10
Yumuşak bir sızıntı olduğunda yığını görüntüleme
03:05
Çöp koleksiyonlarını izleme
06:27
Otomatik yığın tahsisi boyutlandırmayı kapatma
05:47
Ayarlama çöp toplama - yaşlı ve genç ayırma
04:55
Ayarlama çöp toplama - kurtulan alan tahsisi
02:24
Çöp toplamanın ayarlanması - nesillerin yaşlanması gerekiyor
02:06
Bir çöp toplayıcı seçmek
05:37
G1 çöp toplayıcı
04:10
G1 çöp toplayıcının ayarlanması
01:54
Dize tekilleştirme
02:52
Ön izleme
03:44
JMC ikili dosyalarını oluşturma
05:16
JMC'yi çalıştırma ve bir VM'ye bağlanma
03:30
Genel bakış sekmesini özelleştirme
03:41
MBean Tarayıcı sekmesi
01:40
Sistem, Bellek ve Teşhis Komutları sekmeleri
02:24
Sorunlu projemizi tanıtıyoruz
07:59
Uçuş kaydediciyi kullanma
09:02
Bir uçuş kaydını analiz etme
04:22
Uygulamamızı geliştirmek
04:39
Kıyaslama neden basit değil?
06:10
Kıyaslama için kodu ayarlama
05:51
Mikro kıyaslama için basit bir yaklaşım
01:53
Isınma periyodunda ekleme
04:37
İki kod alternatifini karşılaştırma
02:30
Makro karşılaştırmayı kullanma
05:10
JMH kıyaslama aracını yükleme
04:18
Kıyaslama oluşturma ve çalıştırma
05:56
Farklı kıyaslama modlarını kullanma
03:09
Alıştırma 1 için talimatlar (uçuş kaydı oluşturma)
01:40
Çözümün gözden geçirilmesi ve bir sonraki zorluk için hazırlık
05:12
Alıştırma 2 için talimatlar (projeyi makrobenchmarklamak için JMH kullanın)
01:54
Çözümün izlenecek yolu - 1. bölüm kodu ayarlama
05:17
Çözümün izlenecek yolu - 2. bölüm - JMH'ye entegre etme
07:09
Farklı List uygulamalarının nasıl çalıştığını anlamak neden önemlidir?
01:39
8 farklı liste uygulaması
01:39
CopyOnWriteArrayList
02:37
Dizi Listesi
06:02
Bir ArrayList'in başlangıç boyutunu belirtme
05:32
vektör
02:55
Yığın
01:18
Bağlantılı Liste
03:07
En uygun liste türünü seçme
06:57
Listeleri sıralama
02:37
Hashmapler Nasıl Çalışır - PART 1
03:17
Hashcode'un rolü
01:19
Hashmap'ler Nasıl Çalışır - PART 2
03:46
Bir HashMap'in başlangıç boyutunu ve faktörünü belirtme
04:30
HashMap Performansı
02:31
Hashcode kuralları
04:15
Hashcode yöntemini oluşturma ve optimize etme
06:29
Hashmap Performansını Optimize Etme
00:49
LinkedHashMap Nasıl Çalışır?
04:52
HashTable ve TreeMap
01:50
Kodlama seçeneklerini nasıl karşılaştıracağımıza giriş
01:41
İlkelleri nesnelerle karşılaştırma
02:54
BigDecimals ile Double'ları Karşılaştırma
03:46
StringBuilder'ı Kullanma
04:46
Döngüleri ve akışları karşılaştırma
06:41
Günlüğe kaydetme hakkında bir not
03:57
GraalVM nedir?
06:45
GraalVM'yi Yükleme
02:59
Graal Sanal Makineyi Kullanma
06:35
Graal Derleyicisini Kullanma
02:24
Graal ile yerel görüntü oluşturma
04:14
OpenJDK içinde Graal deneysel özelliklerini kullanma
03:34
Diğer JVM Dillerini kullanma ilkeleri
07:04
Javap ile bayt koduna bakmak
10:50
Bayt kodunu Java'ya geri ayırma
07:22
OpenJ9 Sanal Makinesi ve Java'nın gelecekteki sürümlerinde neler olacak?
03:01
Bonus ders