JavaRush /Blog Java /Random-VI /Nghỉ giải lao #132. Chúng ta hãy xem ZGC, trình thu gom r...

Nghỉ giải lao #132. Chúng ta hãy xem ZGC, trình thu gom rác mới nhất trong JDK. Sự khác biệt giữa HashMap, LinkedHashMap và TreeMap trong Java

Xuất bản trong nhóm

Giới thiệu ZGC, trình thu gom rác mới nhất của JDK

Nguồn: Inside Java ZGC hoặc Z Garbage Collector là trình thu gom rác hiện đại nhất trong JDK. Ban đầu nó xuất hiện trong JDK 11 dưới dạng tính năng thử nghiệm. ZGC đã trở thành một tính năng sản xuất trong JDK 15 sau khi bản cải tiến JEP 377 được phê duyệt. Trong bài viết này, chúng ta sẽ xem xét các mục tiêu và tương lai của ZGC. Nghỉ giải lao #132.  Chúng ta hãy xem ZGC, trình thu gom rác mới nhất trong JDK.  Sự khác biệt giữa HashMap, LinkedHashMap và TreeMap trong Java - 1

Đánh giá ZGC

ZGC được thiết kế để trở thành một công cụ thu gom rác có độ trễ thấp, có thể mở rộng. Thời gian tạm dừng tối đa trong quá trình vận hành ZGC hiếm khi vượt quá 250 micro giây. Có, chính xác là micro giây, với thời gian tạm dừng trung bình là hàng chục micro giây. ZGC có khả năng mở rộng cao, với kích thước heap tối thiểu từ 8 MB đến 16 TB. Điều quan trọng cần lưu ý là thời gian tạm dừng không tăng theo kích thước heap. Do đó, ngay cả với một đống có kích thước vài terabyte, thời gian tạm dừng vẫn sẽ được tính bằng micro giây. Mặc dù ZGC cung cấp độ trễ thấp và khả năng mở rộng cao nhưng nó có chi phí thông lượng thấp hơn khoảng 10% so với G1. Việc giảm thông lượng chính xác phụ thuộc vào thiết kế ứng dụng, kiến ​​trúc hệ thống và nhu cầu kinh doanh.

Sử dụng ZGC

Vì G1 là trình thu thập rác mặc định bắt đầu bằng JDK 9 nên bạn sẽ cần đặt cờ VM -XX:+UseZGC để sử dụng ZGC. Khi sử dụng ZGC, cấu hình quan trọng nhất là đặt kích thước heap tối đa, -Xmx. Kích thước heap phải đủ lớn để xử lý tập hợp trực tiếp của ứng dụng của bạn. Nó cũng phải có dự trữ bổ sung để thực hiện việc thu gom rác. Càng có nhiều không gian trống trên heap thì việc thu gom rác càng ít thường xuyên hơn. Nhưng lưu ý rằng điều này phải được cân bằng với việc sử dụng bộ nhớ.

Phát triển hơn nữa của ZGC

Kể từ khi được phát hành dưới dạng tính năng sản xuất trong JDK 15, ZGC đã tiếp tục được phát triển tích cực. Với việc phát hành JDK 16, nó đã giới thiệu tính năng xử lý song song ngăn xếp luồng (JEP 376) và JDK 18 đã thêm tính năng chống trùng lặp hàng như một tính năng bổ sung. Trong tương lai, theo kế hoạch, ZGC sẽ trở thành tổ chức đa thế hệ, mặc dù khung thời gian cụ thể để thực hiện cải tiến này vẫn chưa được thiết lập.

Thông tin thêm về ZDC

Sự khác biệt giữa HashMap, LinkedHashMap và TreeMap trong Java

Nguồn: Rrtutors Nếu bạn muốn lưu trữ các cặp khóa-giá trị trong một chương trình Java thì các bộ sưu tập Java cung cấp nhiều tùy chọn cho việc này tùy thuộc vào nhu cầu của bạn. Chúng bao gồm LinkedHashmap , HashMapTreeMap . Sự khác biệt chính giữa ba lớp này nằm ở cách triển khai nội bộ và ứng dụng cụ thể trong một số trường hợp nhất định. Nghỉ giải lao #132.  Chúng ta hãy xem ZGC, trình thu gom rác mới nhất trong JDK.  Sự khác biệt giữa HashMap, LinkedHashMap và TreeMap trong Java - 2

Sự khác biệt giữa HashMap, LinkedHashMap và TreeMap trong Java

Dưới đây là những khác biệt chính giữa ba lớp được đề cập dựa trên việc triển khai, sắp xếp, sắp xếp và hỗ trợ các khóa và giá trị null.

Thực hiện

Cả HashMapLinkedHashMap đều triển khai giao diện Map , trong khi TreeMap triển khai các giao diện Map , NavigableMap và vSortedMap. LinkedHashMap được triển khai dưới dạng nhóm danh sách liên kết đôi, HashMap được triển khai dưới dạng bảng băm và TreeMap được triển khai dưới dạng cây.

Đặt hàng và sắp xếp

  • HashMap không đảm bảo về thứ tự lặp lại. Tuy nhiên, nó có thể thay đổi hoàn toàn khi có thêm phần tử mới.

  • LinkedHashMap sẽ lặp lại theo thứ tự các mục được đặt vào bản đồ.

  • TreeMap lặp lại theo “thứ tự tự nhiên” của các khóa theo phương thức so sánhTo() của chúng (hoặc Bộ so sánh bên ngoài). Nó cũng triển khai giao diện SortedMap , chứa các phương thức phụ thuộc vào thứ tự sắp xếp.

Khóa và giá trị Null

HashMapsLinkedHashMap hỗ trợ các giá trị null cũng như các giá trị khóa, trong khi TreeMaps không hỗ trợ các giá trị null vì chúng hỗ trợ các loại phần tử tự nhiên. Để có ví dụ trực quan, hãy tạo HashMap , LinkedHashMapTreeMap .
import java.util.HashMap;

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.TreeMap;

public class HashMap_LinkedHashMap_TreeMap {

            public static void main(String[] args) {

                  Map Treemapu = new TreeMap();

                  Treemapu.put("First", "Java");

                  Treemapu.put("Second", "Python");

                  System.out.println("TreeMap values are: \n" + Treemapu);

                  Map Hashimapu = new HashMap();

                  Hashimapu.put("First", "Java");

                  Hashimapu.put("Second", "Python");

                  System.out.println("HashMap Values are: \n" + Hashimapu);

                  Map LinkedHashiMapu = new LinkedHashMap();

                  LinkedHashiMapu.put("First", "Java");

                  LinkedHashiMapu.put("Second", "Python");

                  System.out.println("LinkedHashMap values are: \n" + LinkedHashiMapu);

            }

}
Ở đầu ra, chúng tôi nhận được:
{First=Java, Second=Python} Các giá trị HashMap ​​là: {Second=Python, First=Java} Các giá trị LinkedHashMap ​​là: {First=Java, Second=Python}
Do đó, cả ba lớp đều thể hiện ánh xạ từ các khóa duy nhất đến các giá trị và do đó triển khai giao diện Map .
  • HashMap là một bản đồ dựa trên việc băm khóa. Nó hỗ trợ các hoạt động lấy/đặt O(1). Các khóa phải có cách triển khai hashCode()Equals() nhất quán .

  • LinkedHashMap rất giống với HashMap , nhưng nó có thứ tự trong đó các phần tử được thêm (hoặc truy cập), do đó thứ tự lặp lại giống với thứ tự vị trí (hoặc thứ tự truy cập, tùy thuộc vào tham số thiết kế).

  • TreeMap là một bản đồ dựa trên cây. Hoạt động đặt/nhận của nó mất thời gian O(log n). Điều này đòi hỏi các phần tử phải có một số loại cơ chế so sánh, bằng cơ chế so sánh hoặc bộ so sánh. Thứ tự lặp lại được xác định theo cơ chế này.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION