Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Java Application Performance Tuning and Memory Management

Tối ưu Hiệu suất và Quản lý Bộ nhớ cho Ứng dụng Java

Tối ưu Hiệu suất và Quản lý Bộ nhớ cho Ứng dụng Java

Khám phá cách lựa chọn mã nguồn, đo điểm chuẩn, tinh chỉnh hiệu suất và quản lý bộ nhớ có thể tối ưu hóa ứng dụng Java của bạn

4.6
(5,229 đánh giá)
42,336 học viên
Giảng viên
Matt Greencroft
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 419.000đ -88%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
10.0 giờ video
134 bài giảng
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 30/05/2026

Bạn sẽ học được gì

Nguyên nhân gây ra vấn đề hiệu suất trong ứng dụng và cách giải quyết chúng.
Các lựa chọn dành cho nhà phát triển ở giai đoạn thiết kế - cách đưa ra lựa chọn viết mã tốt để có hiệu suất tối ưu.
Cách cấu hình máy ảo để cung cấp hiệu suất tốt hơn khi chạy.
Trình biên dịch Just In Time của JVM.
Cách máy ảo quản lý bộ nhớ.
Kiểm thử hiệu suất và đo điểm chuẩn.

Yêu cầu

Bạn cần có kiến thức làm việc cơ bản về lập trình Java, nhưng không cần phải là chuyên gia!

Đối tượng phù hợp

Lập trình viên Java muốn tìm hiểu sâu hơn về cách thức hoạt động của Máy ảo Java
Nhà phát triển ứng dụng đang gặp vấn đề với ứng dụng có hiệu suất kém
Tất cả nhà phát triển Java muốn trở thành lập trình viên giỏi hơn

Nội dung khóa học

25 phần • 134 bài giảng
1 Hiệu suất là gì và khóa học này bao gồm những phiên bản Java nào
2 Mã nguồn ví dụ được cung cấp trong khóa học
3 Sử dụng các nhà cung cấp JDK và JVM khác nhau
4 Cấu trúc của khóa học này
5 Cách nhận hỗ trợ trong khi tham gia khóa học
1 Bytecode là gì?
2 Khái niệm "Biên dịch Just In Time"
3 Giới thiệu dự án ví dụ đầu tiên
4 Tìm hiểu phương thức nào đang được biên dịch trong ứng dụng của chúng ta
5 Trình biên dịch C1 và C2 và ghi nhật ký hoạt động biên dịch
6 Tinh chỉnh kích thước bộ nhớ đệm mã
7 Giám sát bộ nhớ đệm mã từ xa với JConsole
1 Sự khác biệt giữa JVM 32 bit và 64 bit
2 Chỉ định trình biên dịch nào sẽ sử dụng khi chạy
3 Tắt biên dịch phân tầng (tiered compilation)
4 Tinh chỉnh biên dịch gốc (native compilation) trong Máy ảo
1 Giới thiệu - Cấu trúc bộ nhớ của Java
2 Cách ngăn xếp (stack) hoạt động
3 Cách vùng nhớ heap hoạt động
4 Kết hợp heap và stack - một ví dụ
1 "Truyền theo giá trị" (pass by value) nghĩa là gì?
2 "Truyền theo tham chiếu" (pass by reference) nghĩa là gì?
3 Truyền đối tượng vào phương thức
4 Từ khóa final và tại sao nó không giống hằng số
5 Tại sao từ khóa final không ngăn giá trị của đối tượng bị thay đổi
1 Hướng dẫn cho bài tập
2 Hướng dẫn giải bài tập
1 Giới thiệu - Tham chiếu thoát là gì?
2 Chiến lược 1 - sử dụng iterator
3 Chiến lược 2 - sao chép bộ sưu tập (collections)
4 Chiến lược 3 - sử dụng bộ sưu tập bất biến (immutable)
5 Chiến lược 4 - sao chép đối tượng
6 Chiến lược 5 - sử dụng giao diện để tạo đối tượng bất biến
7 Chiến lược 6 - sử dụng module để ẩn triển khai
1 Hướng dẫn cho bài tập
2 Hướng dẫn giải bài tập
1 Vai trò của Metaspace
2 PermGen
3 Đối tượng có luôn được tạo trên heap không?
4 String Pool
5 Interning Strings
1 Cách String Pool được triển khai
2 Hiểu về kích thước và mật độ của String Pool
3 Tinh chỉnh kích thước String Pool
4 Tinh chỉnh kích thước heap
5 Cú pháp tắt cho cờ tinh chỉnh heap
1 Ý nghĩa của việc Java là ngôn ngữ được quản lý
2 Cách Java biết đối tượng nào có thể bị xóa khỏi Heap
3 Phương thức System.gc()
4 Trình thu gom rác của Java 11 có thể trả lại bộ nhớ chưa dùng cho hệ điều hành
5 Tại sao không nên chạy phương thức System.gc()
6 Phương thức finalize()
7 Rủi ro khi sử dụng finalize()
1 Rò rỉ mềm (soft leak) là gì?
2 Giới thiệu (J)VisualVM
3 Giám sát kích thước heap theo thời gian
4 Sửa lỗi và kiểm tra kích thước heap
1 Tạo heap dump
2 Xem heap dump
1 Cách trình thu gom rác xác định đâu là rác
2 Tại sao heap được chia thành các thế hệ
3 Cấu trúc bên trong của Thế hệ Trẻ (Young Generation)
4 Xem các thế hệ trong VisualVM
5 Xem heap khi có rò rỉ mềm
1 Giám sát các lần thu gom rác
2 Tắt tự động phân bổ kích thước heap
3 Tinh chỉnh thu gom rác - phân bổ vùng nhớ cũ và trẻ
4 Tinh chỉnh thu gom rác - phân bổ vùng sống sót (survivor space)
5 Tinh chỉnh thu gom rác - số thế hệ cần thiết để trở thành cũ
6 Lựa chọn trình thu gom rác
7 Trình thu gom rác G1
8 Tinh chỉnh trình thu gom rác G1
9 Loại bỏ trùng lặp chuỗi (String de-duplication)
1 Giới thiệu Java Mission Control (JMC)
2 Xây dựng tệp nhị phân JMC
3 Chạy JMC và kết nối với một VM
4 Tùy chỉnh tab Tổng quan (Overview)
5 Tab Duyệt MBean (MBean Browser)
6 Các tab Lệnh Hệ thống, Bộ nhớ và Chẩn đoán
7 Giới thiệu dự án có vấn đề của chúng ta
8 Sử dụng Flight Recorder
9 Phân tích bản ghi Flight Recording
10 Cải thiện ứng dụng của chúng ta
1 Tại sao đo điểm chuẩn không đơn giản.
2 Thiết lập mã để đo điểm chuẩn
3 Cách tiếp cận đơn giản để đo điểm chuẩn vi mô (micro-benchmarking)
4 Thêm giai đoạn khởi động (warm-up)
5 So sánh hai phương án mã thay thế
6 Sử dụng Đo điểm chuẩn vĩ mô (Macro-benchmarking)
1 Cài đặt công cụ đo điểm chuẩn JMH
2 Tạo và chạy các điểm chuẩn
3 Sử dụng các chế độ điểm chuẩn khác nhau
1 Hướng dẫn bài tập 1 (tạo bản ghi Flight Recording)
2 Hướng dẫn giải & thiết lập sẵn sàng cho thử thách tiếp theo
3 Hướng dẫn bài tập 2 (sử dụng JMH để đo điểm chuẩn vĩ mô cho dự án)
4 Hướng dẫn giải - phần 1 thiết lập mã
5 Hướng dẫn giải - phần 2 - tích hợp vào JMH
1 Tại sao hiểu cách các triển khai List khác nhau hoạt động lại quan trọng
2 8 triển khai danh sách khác nhau
3 CopyOnWriteArrayList
4 ArrayList
5 Chỉ định kích thước ban đầu của ArrayList
6 Vector
7 Stack
8 LinkedList
9 Chọn loại danh sách tối ưu
10 Sắp xếp danh sách
1 Cách Hashmaps Hoạt động - phần 1
2 Vai trò của Hashcode
3 Cách Hashmaps Hoạt động - phần 2
4 Chỉ định kích thước ban đầu và hệ số của HashMap
5 Hiệu suất HashMap
6 Quy tắc cho Hashcodes
7 Tạo và tối ưu hóa phương thức Hashcode
8 Tối ưu hóa Hiệu suất Hashmap
9 Cách LinkedHashMap Hoạt động
10 HashTable và TreeMap
1 Giới thiệu cách chúng ta sẽ so sánh các tùy chọn viết mã
2 So sánh kiểu nguyên thủy (primitive) với đối tượng
3 So sánh BigDecimals với Doubles
4 Sử dụng StringBuilder
5 So sánh vòng lặp và luồng (streams)
6 Lưu ý về ghi nhật ký (logging)
1 GraalVM là gì?
2 Cài đặt GraalVM
3 Sử dụng Máy ảo Graal
4 Sử dụng Trình biên dịch Graal
5 Xây dựng ảnh gốc (native image) với Graal
6 Sử dụng các tính năng thử nghiệm của Graal trong OpenJDK
1 Nguyên tắc sử dụng các ngôn ngữ JVM khác
2 Xem bytecode với javap
3 Dịch ngược bytecode trở lại Java
1 Máy ảo OpenJ9 và những gì sắp tới trong các phiên bản Java tương lai
2 Bài giảng bổ sung

Giới thiệu khóa học

In this course we'll understand what can cause performance issues in our applications, and how to resolve them. This includes a review of some of the options available to us as developers at design-time - how to make good coding choices for optimal performance. For example, when should you pick an ArrayList over a LinkedList? How much difference does the StringBuilder really make? Is Lambda syntax more or less efficient at certain operations?  We'll also learn about various ways that we can configure the virtual machine to provide better performance at run-time, with a range of runtime arguments. We'll also be diving deep into how the virtual machine manages memory, and how the garbage collection process works and impacts on application performance.

Along the way we'll be learning about the Just In Time compiler, performance testing and benchmarking, decompiling bytecode, using the GraalVM as an alternative virtual machine and more.

About Java Versions: This is the second iteration of this course and it is designed for all the current versions of Java that have long term support (Java 8 , Java 11 and Java 17). You can follow along with any of these versions. You can also use either the Oracle or the OpenJDK JVMs.  For developers using other JVM languages (such as Kotlin, Scala and Groovy) all of the JVM configuration parts of this course will still be relevant, and some of the coding choices may be useful to consider also. (Note that there's even a review of whether Kotlin provides better or worse performance than Java!)

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Java
Hiển thị tất cả khoá học Programming Languages
Hiển thị tất cả khoá học Software Development
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊