Tôi cần lưu trữ nhiều dữ liệu (Đối tượng) trong bộ nhớ (để tính toán).
Do tính toán được thực hiện dựa trên dữ liệu này, điều quan trọng là tất cả dữ liệu sẽ nằm trong cùng một bộ nhớ quá trình JVM.
Hầu hết dữ liệu sẽ được tạo từ Strings, Integers và các đối tượng con khác (Collections, HashSet, etc ...).
Vì chi phí bộ nhớ đối tượng của Java rất quan trọng (Chuỗi là UTF-16, mỗi đối tượng có 8 byte trên đầu) Tôi đang tìm các thư viện cho phép lưu trữ dữ liệu đó trong bộ nhớ với chi phí thấp hơn.
Tôi đã đọc bài viết thú vị về việc giảm bộ nhớ:
* http://www.cs.virginia.edu/kim/publicity/pldi09tutorials/memory-efficient-java-tutorial.pdf * http://blog.griddynamics.com/2010/01/java-tricks-reducing-memory-consumption.htmlGiảm thiểu phí bộ nhớ dữ liệu ứng dụng trong các quá trình java
Tôi chỉ tự hỏi nếu có một số thư viện cho các kịch bản như vậy trên mạng hoặc tôi sẽ cần phải bắt đầu lại từ đầu.
Để hiểu rõ hơn, yêu cầu của tôi tưởng tượng một máy chủ xử lý khối lượng bản ghi cao và cần phân tích chúng dựa trên hàng triệu bản ghi khác được lưu trữ trong bộ nhớ (với tốc độ xử lý cao).
Cảm ơn! thư viện trove trông rất tuyệt. Bạn có quen thuộc với một số thư viện để giảm chi phí chuỗi không? –
không thực sự. ngoại trừ việc lưu trữ các chuỗi ascii dưới dạng nhị phân và "deserializing" chúng trở lại không có gì nhiều tôi biết rằng bạn có thể làm - java chỉ có một chuỗi đại diện nội bộ và thats unicode. – radai
Vâng, bây giờ tôi nghĩ về nó một số chi tiết, nếu những chuỗi lặp lại bản thân bạn có thể tập() họ để có được một trường hợp duy nhất, nhưng mặt lật là hồ bơi của những trường hợp duy nhất nằm trong permgen (ít nhất là trong java 6) và không được làm sạch, vì vậy bạn có thể bị rò rỉ. nếu họ thực sự lặp lại có thể bạn có thể thêm hồ bơi chuỗi duy nhất của riêng mình – radai