Sau đây là một chiết xuất từ MSDN:CLR/JVM có giữ một hồ bơi đơn cho tất cả các ứng dụng .net/java đang chạy không?
Bộ thực thi ngôn ngữ chung bảo tồn chuỗi lưu trữ bằng cách duy trì một bảng, gọi là hồ sinh nội trú, có chứa một tham chiếu duy nhất để mỗi chuỗi chữ độc đáo tuyên bố hoặc tạo lập trình trong chương trình của bạn. Do đó, một thể hiện của một chuỗi theo nghĩa đen với một giá trị cụ thể chỉ tồn tại một lần trong hệ thống.
Ví dụ, nếu bạn gán cùng chuỗi chữ cho một số các biến, thời gian chạy lấy cùng tham chiếu đến chuỗi chữ từ hồ bơi tập và gán nó vào mỗi biến .
Phương thức Intern sử dụng hồ bơi thực tập để tìm kiếm chuỗi bằng giá trị của str. Nếu chuỗi đó tồn tại, tham chiếu của nó trong hồ bơi thực tập là được trả lại. Nếu chuỗi không tồn tại , tham chiếu đến str được thêm vào hồ bơi thực, sau đó tham chiếu được trả về. .... Nếu bạn đang cố gắng để giảm tổng số bộ nhớ mà ứng dụng của bạn phân bổ , hãy ghi nhớ rằng việc thực hiện chuỗi có hai hiệu ứng phụ không mong muốn là . Đầu tiên, bộ nhớ được phân bổ cho các chuỗi tập trung không được phát hành cho đến khi thời gian chạy ngôn ngữ chung (CLR) chấm dứt.
Vì vậy, điều này có nghĩa là CLR giữ một hồ bơi thực đơn cho tất cả các ứng dụng .net đang chạy không? Ví dụ: nếu chương trình A tạo chuỗi "Kiểm tra" bằng chữ và nếu chương trình khác cố gắng tạo một chuỗi "Kiểm tra" khác, thì cùng một bản sao được sử dụng? Câu hỏi tương tự cũng áp dụng cho JVM.
Bạn có liên kết không? –