Hiểu sâu về cơ chế Garbage Collection và tối ưu hóa hiệu năng trong JVM

Phân vòng đời đối tượng và cấu trúc bộ nhớ Heap JVM sử dụng cơ chế "Generational Collection" để quản lý bộ nhớ, nơi các đối tượng được phân loại dựa trên thời gian tồn tại của chúng và lưu trữ ở các vùng nhớ khác nhau: Young Generation (Thế hệ trẻ): Khu vực lưu trữ các đối tượng có vòng đời ngắn ("sinh và chết nhanh"). Hầu hết các đối tượng mớ ...

Đăng vào ngày 1 tháng 6 lúc 21:26

Thuật toán đánh dấu ba màu trong JVM

Giới thiệu thuật toán đánh dấu ba màu Trình thu gom rác (GC) có mục tiêu chính là thực hiện việc thu hồi bộ nhớ, trong quá trình này gồm hai bước chính: đánh dấu bộ nhớ, thu hồi bộ nhớ. Khái niệm đánh dấu ba màu Phương pháp đánh dấu ba màu chủ yếu nhằm mục đích đánh dấu hiệu quả các khối bộ nhớ có thể được thu hồi. Đánh dấu ba màu (Tri-colo ...

Đăng vào ngày 31 tháng 5 lúc 16:44

Cách phá vỡ cơ chế ủy quyền hai chiều trong Java

Trước khi đọc bài viết, hãy suy nghĩ về hai câu hỏi sau và tìm lời giải trong nội dung dưới đây: Nếu bạn tự viết lại lớp java.lang.String và tải nó bằng URLClassLoader, liệu có thể ghi đè lên lớp String gốc trong JDK không? Nếu câu trả lời là không, thì có cách nào để thay thế được lớp java.lang.String trong JDK không? 1. Cơ chế ủy quyền ...

Đăng vào ngày 28 tháng 5 lúc 07:56

Cấu hình cơ bản của Elasticsearch phiên bản 6.6.0

Tổng quan các tệp cấu hình chính 1. elasticsearch.yml (Tệp cấu hình dịch vụ) Vị trí tệp: ${ES_HOME}/config/elasticsearch.yml # ======================== Cấu hình Elasticsearch ========================= # # LƯU Ý: Elasticsearch đi kèm với các thiết lập mặc định hợp lý cho phần lớn trường hợp. # Trước khi bạn điều chỉnh và tối ưu hóa cấu h ...

Đăng vào ngày 27 tháng 5 lúc 12:01

Giám sát và chẩn đoán rò rỉ bộ nhớ heap trong luồng ảo: 3 phương pháp thiết yếu

Giám sát mức sử dụng bộ nhớ heap của luồng ảo Kể từ khi Java 21 giới thiệu luồng ảo (Virtual Threads), khả năng xử lý đồng thời đã được cải thiện đáng kể nhờ vào tính nhẹ của chúng. Tuy nhiên, việc tạo ra hàng loạt luồng ảo vẫn có thể gây áp lực lên bộ nhớ heap. Do đó, việc theo dõi mức sử dụng heap là yếu tố then chốt để tối ưu hiệu suất. Kíc ...

Đăng vào ngày 27 tháng 5 lúc 01:06

Cấu hình đường dẫn Log4j linh hoạt cho ứng dụng Java

Trong quá trình phát triển ứng dụng Java, việc quản lý file log là một phần không thể thiếu. Một vấn đề phổ biến mà các lập trình viên thường gặp phải là sự khác biệt về cấu trúc thư mục giữa môi trường phát triển (Local) và môi trường thực tế (Production). Việc thiết lập đường dẫn tuyệt đối trong file cấu hình log4j.properties thường gây ra sự ...

Đăng vào ngày 23 tháng 5 lúc 00:29

Quản lý và thu hồi bộ nhớ ngoài heap trong JVM

Quản lý và thu hồi bộ nhớ ngoài heap trong JVM 1. Phân bổ và thu gom rác bộ nhớ trong JVM Bộ nhớ của JVM thường được chia thành các khu vực cơ bản: Khu vực trẻ (Young Generation): Các đối tượng mới tạo ra thường nằm ở đây. Khu vực già (Old Generation): Sau vài lần thu gom rác, các đối tượng từ khu vực trẻ sẽ chuyển sang khu vực già và tồn tại l ...

Đăng vào ngày 22 tháng 5 lúc 00:08

Sử dụng chú thích trong Java

Chú thích (Annotation) là một tính năng quan trọng và mạnh mẽ trong Java, cho phép thêm thông tin.metadata vào mã nguồn mà không làm thay đổi logic xử lý. Tính năng này hỗ trợ tạo mã tự động, xử lý động tại thời gian chạy và đơn giản hóa cấu hình, giúp tăng hiệu suất phát triển và độ linh hoạt của ứng dụng. Cơ sở về chú thích Chú thích được đị ...

Đăng vào ngày 19 tháng 5 lúc 22:00

Cách JVM Nhận Biết Giới Hạn Tài Nguyên Trong Môi Trường Kubernetes

Trong môi trường Kubernetes, các container thường được giới hạn tài nguyên thông qua cgroup. Tuy nhiên, các ứng dụng Java (chạy trên JVM) trước phiên bản 8u191 hoặc JDK 10 trở xuống không tự động nhận diện giới hạn tài nguyên từ cgroup, dẫn đến việc JVM có thể sử dụng vượt mức tài nguyên được cấp phát cho container. Từ JDK 8u191 và JDK 10 trở ...

Đăng vào ngày 19 tháng 5 lúc 10:15

Hướng Dẫn Sử Dụng VisualVM Để Giám Sát Ứng Dụng Java

VisualVM là công cụ quan trọng trong bộ công cụ của lập trình viên Java, đặc biệt khi cần chẩn đoán vấn đề về hiệu năng và bộ nhớ. Bài viết này sẽ hướng dẫn chi tiết cách cài đặt, cấu hình và sử dụng các tính năng chính của VisualVM. Tổng Quan Về VisualVM VisualVM là một công cụ phân tích và giám sát hiệu năng Java được phát triển bởi Oracle. ...

Đăng vào ngày 19 tháng 5 lúc 03:26