Từ khóa mới phân bổ bộ nhớ trên heap Java. Heap là nhóm bộ nhớ chính, có thể truy cập được cho toàn bộ ứng dụng. Nếu không có đủ bộ nhớ để phân bổ cho đối tượng đó, JVM sẽ cố gắng lấy lại một số bộ nhớ từ đống với bộ sưu tập rác. Nếu nó vẫn không thể có đủ bộ nhớ, OutOfMemoryError sẽ bị ném và JVM thoát.
Heap được chia thành nhiều phần khác nhau, được gọi là các thế hệ. Khi các đối tượng tồn tại nhiều bộ sưu tập rác hơn, chúng được phát huy thành các thế hệ khác nhau. Các thế hệ cũ không được thu gom rác thường xuyên. Bởi vì những vật thể này đã được chứng minh là tồn tại lâu hơn, nên chúng ít có khả năng là rác được thu gom.
Khi các vật thể được xây dựng lần đầu tiên, chúng được phân bổ trong Không gian Eden. Nếu chúng sống sót trong một bộ sưu tập rác, chúng được thăng cấp lên Không gian sống sót và nếu chúng sống đủ lâu ở đó, chúng sẽ được phân bổ cho Thế hệ bị chiếm giữ. Thế hệ này là rác được thu thập ít thường xuyên hơn.
Ngoài ra còn có một thế hệ thứ tư, được gọi là Thế hệ vĩnh viễn, hoặc PermGen. Các đối tượng cư trú ở đây không đủ điều kiện để được thu gom rác và thường chứa trạng thái bất biến cần thiết để JVM chạy, chẳng hạn như định nghĩa lớp và nhóm hằng chuỗi. Lưu ý rằng không gian PermGen được lên kế hoạch xóa khỏi Java 8 và sẽ được thay thế bằng một không gian mới gọi là Metaspace, sẽ được giữ trong bộ nhớ riêng. tham khảo ý tưởng http://www.programcalet.com/2013/04/jvm-run-time-data-areas/