2009-10-27 45 views

Trả lời

2

Có một lớp SessionSize here có hàm trả về kích thước của đối tượng HttpSession được truyền cho nó, một phần của lib Java Web Parts.

1

Nội dung phiên phải được Serializable. Vì vậy, tuần tự hóa nó và xem kích thước của mảng byte kết quả.

Nó không bằng kích thước trong bộ nhớ, nhưng có thể được sử dụng như một biểu diễn thô sơ của nó.

P.S. Lưu ý rằng các trường tạm thời, nếu có, sẽ bị loại trừ.

+0

Thuộc tính phiên ** nên ** có thể được tuần tự hóa (như trong "thực hành tốt để làm như vậy"); nhưng họ không ** có **. – ChssPly76

+1

Tuần tự hóa phiên là một cách hiệu quả để tiết kiệm bộ nhớ bằng cách lưu các phiên không sử dụng vào đĩa. Nếu Erlanged có ứng dụng với phiên không serializable, đó là điều đầu tiên để sửa chữa thay vì đo kích thước của phiên induvidual '. –

+1

Re: phải/nên: container PHẢI chấp nhận đối tượng Serializable, và CÓ THỂ chấp nhận những người khác. Nó cũng có thể ném IllegalArgumentException trên bất kỳ một không serializable. Tôi muốn nói Serializable là khá nhiều PHẢI, theo cách WE-TOLD-YOU-SO. –

6

MessAdmin cho phép bạn tính kích thước HttpSession mặc dù không rõ ràng cách nó calculates the size of transient objects.

Dường như nhận được kích thước gần đúng của đối tượng HttpSession là một bài tập vô ích trong sản xuất và có khả năng nhận được kích thước chính xác hơn cho môi trường được kiểm soát. Một điều cần lưu ý là kích thước của đối tượng phiên được tuần tự hóa bị ràng buộc không chính xác do thay đổi trong mã hóa ký tự - Các chuỗi trong Java được lưu trữ theo định dạng UTF-16 trong khi luồng đầu ra có thể bằng mã hóa khác. Bạn có thể tìm thấy thêm chi tiết về lý do tại sao tính toán kích thước của một đối tượng trong Java là JavaWorld article.

+0

Tôi đang sử dụng điều này trong một ứng dụng web với khung struts-2 và spring 3.4 là container đối tượng, kích thước phiên của tôi luôn là -1 có nghĩa là nó không thể tính toán kích thước của các đối tượng trong phiên. –

+0

@Alireza Fattahi Tôi đã vật lộn với cùng một vấn đề. Và cuối cùng tôi phát hiện ra rằng bạn cần sử dụng plugin MessAdmin-SizeOf ngoài MessAdmin-Core và MessAdmin-AutoProb để có được kích thước thuộc tính phiên. Bạn cũng có thể muốn thêm MessAdmin-Serializable. – magicbacon

Các vấn đề liên quan