آموزش تنظیم عملکرد برنامه جاوا و مدیریت حافظه

Java Application Performance Tuning and Memory Management

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: کشف کنید که چگونه انتخاب های کدنویسی، محک زدن، تنظیم عملکرد و مدیریت حافظه می توانند برنامه های جاوا شما را بهینه کنند چه چیزی می تواند باعث مشکلات عملکرد در برنامه های ما شود و چگونه آنها را حل کنیم. انتخاب هایی که در زمان طراحی در دسترس ما به عنوان توسعه دهندگان است - نحوه انتخاب کدنویسی خوب برای عملکرد بهینه. نحوه پیکربندی ماشین مجازی برای ارائه عملکرد بهتر در زمان اجرا. کامپایلر JVM Just In Time. نحوه مدیریت حافظه توسط ماشین مجازی تست عملکرد و محک زدن. پیش نیازها: دانش اولیه برنامه نویسی جاوا مورد نیاز است، اما نیازی نیست که متخصص جاوا باشید!

در این دوره آموزشی خواهیم فهمید که چه چیزی می تواند باعث مشکلات عملکرد در برنامه های ما شود و چگونه آنها را حل کنیم. این شامل بررسی برخی از گزینه‌های در دسترس ما به‌عنوان توسعه‌دهندگان در زمان طراحی است - نحوه انتخاب کدنویسی خوب برای عملکرد بهینه. به عنوان مثال، چه زمانی باید یک ArrayList را به جای LinkedList انتخاب کنید؟ واقعاً StringBuilder چقدر تفاوت دارد؟ آیا نحو لامبدا در عملیات خاصی کم و بیش کارآمد است؟ همچنین در مورد روش‌های مختلفی که می‌توانیم ماشین مجازی را برای ارائه عملکرد بهتر در زمان اجرا، با طیف وسیعی از آرگومان‌های زمان اجرا، پیکربندی کنیم، یاد خواهیم گرفت. ما همچنین به نحوه مدیریت حافظه توسط ماشین مجازی و نحوه عملکرد فرآیند جمع‌آوری زباله و تأثیر آن بر عملکرد برنامه خواهیم پرداخت.

در طول مسیر، در مورد کامپایلر Just In Time، تست عملکرد و محک زدن، دیکامپایل بایت کد، استفاده از GraalVM به عنوان یک ماشین مجازی جایگزین و موارد دیگر خواهیم آموخت.

درباره نسخه های جاوا: این دومین تکرار این دوره است و برای تمام نسخه های فعلی جاوا که پشتیبانی طولانی مدت دارند (جاوا 8، جاوا 11 و جاوا 17) طراحی شده است. شما می توانید با هر یک از این نسخه ها همراه باشید. همچنین می توانید از Oracle یا OpenJDK JVM استفاده کنید. برای توسعه دهندگانی که از سایر زبان های JVM (مانند Kotlin، Scala و Groovy) استفاده می کنند، تمام قسمت های پیکربندی JVM این دوره همچنان مرتبط خواهد بود و برخی از انتخاب های کدنویسی نیز ممکن است مفید باشد. (توجه داشته باشید که حتی یک بررسی در مورد اینکه آیا کاتلین عملکرد بهتر یا بدتر از جاوا را ارائه می دهد وجود دارد!)


سرفصل ها و درس ها

فصل 1 مقدمه Chapter 1 - Introduction

  • منظور ما از عملکرد چیست و این دوره شامل چه نسخه هایی از جاوا می شود What do we mean by performance, and what versions of Java does this course cover

  • کد نمونه ارائه شده با این دوره Example code provided with this course

  • استفاده از فروشندگان مختلف JDK و JVM Using different JDK and JVM vendors

  • ساختار این دوره The structure of this course

  • چگونه در حین گذراندن این دوره از پشتیبانی برخوردار شوید How to get support while you're taking this course

فصل 2 - درست در زمان کامپایل و کش کد Chapter 2 - Just In Time Compilation and the Code Cache

  • بایت کد چیست؟ What is bytecode?

  • مفهوم "تدوین در زمان" The concept of "Just In Time Compilation"

  • معرفی پروژه نمونه اول Introducing the first example project

  • پیدا کردن روش هایی که در برنامه های ما کامپایل می شوند Finding out which methods are being compiled in our applications

  • کامپایلرهای C1 و C2 و ثبت فعالیت کامپایل The C1 and C2 Compilers and logging the compilation activity

  • تنظیم اندازه حافظه پنهان کد Tuning the code cache size

  • نظارت از راه دور حافظه پنهان کد با JConsole Remotely monitoring the code cache with JConsole

فصل 3 - انتخاب JVM Chapter 3 - Selecting the JVM

  • تفاوت بین JVM 32 بیتی و 64 بیتی The differences between the 32 bit and 64 bit JVM

  • تعیین اینکه از کدام کامپایلر در زمان اجرا استفاده شود Specifying which compiler to use at runtime

  • خاموش کردن کامپایل لایه‌ای Turning off tiered compilation

  • تنظیم کامپایل بومی در ماشین مجازی Tuning native compilation within the Virtual Machine

فصل 4 - حافظه چگونه کار می کند - پشته و پشته Chapter 4 - How memory works - the stack and the heap

  • مقدمه - ساختار حافظه جاوا Introduction - the structure of Java's memory

  • پشته چگونه کار می کند How the stack works

  • هپ چگونه کار می کند How the heap works

  • پشته و پشته با هم - یک مثال The heap and the stack together - an example

فصل 5 - عبور اشیا بین متدها Chapter 5 - Passing objects between methods

  • «گذر از ارزش» به چه معناست؟ What does "passing by value" mean?

  • «عبور از مرجع» به چه معناست؟ What does "passing by reference" mean?

  • انتقال اشیا به متدها Passing objects into methods

  • کلمه کلیدی نهایی و اینکه چرا با یک ثابت یکسان نیست The final keyword and why it's not the same as a constant

  • چرا کلمه کلیدی نهایی از تغییر مقادیر یک شی جلوگیری نمی کند Why the final keyword doesn't stop an object's values from being changed

فصل 6 - تمرین حافظه 1 Chapter 6 - Memory exercise 1

  • دستورالعمل تمرین Instructions for the exercise

  • بررسی راه حل Walkthrough of the solution

فصل 7 - فرار از مراجع Chapter 7 - Escaping References

  • مقدمه - مرجع فرار چیست؟ Introduction - what is an escaping reference?

  • استراتژی 1 - استفاده از یک تکرار کننده Strategy 1 - using an iterator

  • استراتژی 2 - کپی کردن مجموعه ها Strategy 2 - duplicating collections

  • استراتژی 3 - استفاده از مجموعه های تغییرناپذیر Strategy 3 - using immutable collections

  • استراتژی 4 - کپی کردن اشیاء Strategy 4 - duplicating objects

  • استراتژی 5 - استفاده از رابط ها برای ایجاد اشیاء تغییرناپذیر Strategy 5 - using interfaces to create immutable objects

  • استراتژی 6 - استفاده از ماژول ها برای پنهان کردن پیاده سازی Strategy 6 - using modules to hide the implementation

فصل 8 - تمرین حافظه 2 Chapter 8 - Memory Exercise 2

  • دستورالعمل تمرین Instructions for the exercise

  • بررسی راه حل Walkthrough of the solution

فصل 9 - بهینه‌سازی‌های متاس‌اسپی و حافظه داخلی JVM Chapter 9 - The Metaspace and internal JVM memory optimisations

  • نقش متاسپیس The role of the Metaspace

  • PermGen The PermGen

  • آیا اشیاء همیشه روی پشته ایجاد می شوند؟ Are objects always created on the heap?

  • استخر رشته The String Pool

  • رشته های داخلی Interning Strings

فصل 10 - تنظیم تنظیمات حافظه JVM Chapter 10 - Tuning the JVM's Memory Settings

  • نحوه اجرای استخر رشته How the string pool is implemented

  • درک اندازه و چگالی استخر رشته Understanding the size and density of the string pool

  • تنظیم اندازه استخر رشته Tuning the size of the string pool

  • تنظیم اندازه پشته Tuning the size of the heap

  • نحو میانبر برای پرچم های تنظیم پشته Shortcut syntax for heap tuning flags

فصل 11 - معرفی جمع آوری زباله Chapter 11 - Introducing Garbage Collection

  • وقتی می گوییم جاوا یک زبان مدیریت شده است به چه معناست What it means when we say Java is a managed language

  • جاوا چگونه می داند که کدام اشیاء را می توان از Heap حذف کرد How Java knows which objects can be removed from the Heap

  • متد System.gc(). The System.gc() method

  • جمع آوری زباله جاوا 11 می تواند حافظه استفاده نشده را به سیستم عامل بازگرداند Java 11's garbage collector can give unused memory back to the operating system

  • چرا اجرای متد System.gc() ایده خوبی نیست Why it's not a good idea to run the System.gc() method

  • متد finalize(). The finalize() method

  • خطر استفاده از finalize() The danger of using finalize()

فصل 12 - نظارت بر پشته Chapter 12 - Monitoring the Heap

  • نشتی نرم چیست؟ What is a soft leak?

  • معرفی (J)VisualVM Introducing (J)VisualVM

  • نظارت بر اندازه پشته در طول زمان Monitoring the size of the heap over time

  • رفع مشکل و بررسی اندازه پشته Fixing the problem and checking the heap size

فصل 13 - تجزیه و تحلیل یک دامپ پشته Chapter 13 - Analysing a heap dump

  • ایجاد یک دامپ پشته Generating a heap dump

  • مشاهده یک زباله دانی Viewing a heap dump

فصل 14 - جمع آوری زباله نسلی Chapter 14 - Generational Garbage Collection

  • چگونه زباله جمع کن کار می کند که زباله چیست How the garbage collector works out what is garbage

  • چرا توده به نسل ها تقسیم می شود Why the heap is divided into generations

  • درونی های نسل جوان The Internals of the Young Generation

  • مشاهده نسل ها در VisualVM Viewing the generations in VisualVM

  • مشاهده پشته زمانی که نشتی نرم وجود دارد Viewing the heap when there's a soft leak

فصل 15 - تنظیم و انتخاب زباله گرد Chapter 15 - Garbage Collector tuning & selection

  • نظارت بر جمع آوری زباله Monitoring garbage collections

  • خاموش کردن اندازه خودکار تخصیص پشته Turning off automated heap allocation sizing

  • تیونینگ جمع آوری زباله - تخصیص پیر و جوان Tuning garbage collection - old and young allocation

  • تنظیم جمع آوری زباله - تخصیص فضای بازمانده Tuning garbage collection - survivor space allocation

  • تنظیم جمع آوری زباله - نسل ها باید پیر شوند Tuning garbage collection - generations needed to become old

  • انتخاب زباله جمع کن Selecting a garbage collector

  • زباله جمع کن G1 The G1 garbage collector

  • تنظیم زباله جمع کن G1 Tuning the G1 garbage collector

  • حذف رشته String de-duplication

فصل 16 - استفاده از پروفایلر برای تجزیه و تحلیل عملکرد برنامه Chapter 16 - Using a profiler to analyse application performance

  • معرفی جاوا Mission Control (JMC) Introducing Java Mission Control (JMC)

  • ساخت باینری های JMC Building the JMC binaries

  • اجرای JMC و اتصال به VM Running JMC and connecting to a VM

  • سفارشی کردن برگه نمای کلی Customising the overview tab

  • تب MBean Browser The MBean Browser tab

  • زبانه های سیستم، حافظه و دستورات تشخیصی The System, Memory and Diagnostic Commands tabs

  • پروژه مشکل ما را معرفی می کنیم Introducing our problem project

  • با استفاده از ضبط پرواز Using the flight recorder

  • تجزیه و تحلیل یک ضبط پرواز Analyzing a flight recording

  • در حال بهبود برنامه ما Improving our application

فصل 17 - ارزیابی عملکرد Chapter 17 - Assessing Performance

  • چرا محک زدن ساده نیست. Why benchmarking isn't straight forward.

  • تنظیم کد برای بنچمارک Setting up the code for benchmarking

  • یک رویکرد ساده برای محک زدن خرد A simple approach to micro-benchmarking

  • اضافه کردن یک دوره گرم کردن Adding in a warm-up period

  • مقایسه دو جایگزین کد Comparing two code alternatives

  • استفاده از محک گذاری کلان Using Macro-bencharmking

فصل 18 - محک زدن با JMH Chapter 18 - Benchmarking with JMH

  • نصب ابزار سنجش JMH Installing the JMH benchmarking tool

  • ایجاد و اجرای معیارها Creating and running benchmarks

  • استفاده از حالت های مختلف بنچمارک Using different benchmark modes

فصل 19 - تمرین عملکرد و معیار Chapter 19 - Performance and Benchmarking Exercise

  • دستورالعمل تمرین 1 (ایجاد ضبط پرواز) Instructions for exercise 1 (creating a flight recording)

  • بررسی راه حل و راه اندازی آماده برای چالش بعدی Walkthrough of the solution & setting up ready for the next challenge

  • دستورالعمل تمرین 2 (از JMH برای ماکرو بنچمارک کردن پروژه استفاده کنید) Instructions for exercise 2 (use JMH to macrobenchmark the project)

  • راهنمای راه حل - قسمت 1 تنظیم کد Walkthrough of the solution - part 1 setting up the code

  • بررسی راه حل - قسمت 2 - ادغام در JMH Walkthrough of the solution - part 2 - integrating into JMH

فصل 20 - لیست ها چگونه کار می کنند Chapter 20 - How Lists Work

  • چرا مهم است که بفهمیم پیاده سازی های مختلف لیست چگونه کار می کنند Why it's important to understand how the different List implementations work

  • 8 پیاده سازی لیست مختلف The 8 different list implementations

  • CopyOnWriteArrayList The CopyOnWriteArrayList

  • ArrayList The ArrayList

  • تعیین اندازه اولیه یک ArrayList Specifying the initial size of an ArrayList

  • بردار The Vector

  • پشته The Stack

  • LinkedList The LinkedList

  • انتخاب نوع لیست بهینه Choosing the optimal list type

  • مرتب سازی لیست ها Sorting lists

فصل 21 - نقشه ها چگونه کار می کنند Chapter 21 - How Maps Work

  • نحوه کار Hashmaps - قسمت 1 How Hashmaps Work - part 1

  • نقش هش کد The role of the Hashcode

  • نحوه کار Hashmaps - قسمت 2 How Hashmaps Work - part 2

  • تعیین اندازه و فاکتور اولیه HashMap Specifying the initial size and factor of a HashMap

  • عملکرد HashMap HashMap Performance

  • قوانین برای Hashcodes The rules for Hashcodes

  • تولید و بهینه سازی روش Hashcode Generating and optimising the Hashcode method

  • بهینه سازی عملکرد هاشمپ Optimising Hashmap Performance

  • LinkedHashMap چگونه کار می کند How The LinkedHashMap Works

  • HashTable و TreeMap The HashTable and TreeMap

فصل 22 - سایر گزینه های کدگذاری Chapter 22 - Other Coding Choices

  • مقدمه ای برای مقایسه گزینه های کدگذاری Introduction to how we'll compare coding options

  • مقایسه اولیه با اشیاء Comparing primatives with objects

  • مقایسه BigDecimals با Doubles Comparing BigDecimals with Doubles

  • با استفاده از StringBuilder Using the StringBuilder

  • مقایسه حلقه ها و جریان ها Comparing loops and streams

  • یادداشتی در مورد ورود به سیستم A note on logging

فصل 23 - GraalVM Chapter 23 - GraalVM

  • GraalVM چیست؟ What is GraalVM?

  • نصب GraalVM Installing GraalVM

  • استفاده از ماشین مجازی Graal Using the Graal Virtual Machine

  • استفاده از کامپایلر Graal Using the Graal Compiler

  • ساختمان تصویر بومی با Graal Native image building with Graal

  • استفاده از ویژگی های تجربی Graal در OpenJDK Using the Graal experimental features within OpenJDK

فصل 24 - استفاده از سایر زبان های JVM Chapter 24 - Using Other JVM Languages

  • اصول استفاده از سایر زبان های JVM The principles of using other JVM Languages

  • مشاهده بایت کد با جاواپ Looking at bytecode with javap

  • جداسازی بایت کد به جاوا Disassembling bytecode back to Java

فصل 25 - خلاصه دوره Chapter 25 - Course Summary

  • ماشین مجازی OpenJ9 و آنچه در نسخه های آینده جاوا در راه است The OpenJ9 Virtual Machine and what's coming up in future versions of Java

  • سخنرانی پاداش Bonus lecture

نمایش نظرات

آموزش تنظیم عملکرد برنامه جاوا و مدیریت حافظه
جزییات دوره
10 hours
134
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
26,497
4.5 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Matt Greencroft Matt Greencroft

مدرس دوره در برنامه نویسان جفت مجازی

Virtual Pair Programmers Virtual Pair Programmers