2013-02-11 36 views
5

Tôi đang sử dụng H2 DB ở chế độ trong bộ nhớ để xử lý một số dữ liệu. Ứng dụng java của tôi cần giữ JVM trong khi thả và tạo lại hoặc cắt bớt hoặc bỏ tất cả các đối tượng trong H2 DB trong mỗi lần chạy. Do đó, tôi cần sử dụng tùy chọn 'DB_CLOSE_DELAY = -1' trong URL DB.H2 DB trong bộ nhớ Làm sạch RAM

Để xóa bộ nhớ sau khi lặp lại, tôi đã thử sử dụng 'TẤT CẢ TẤT CẢ CÁC ĐỐI TƯỢNG', 'TẤT CẢ TẤT CẢ CÁC MỤC TIÊU XÓA LỌC' và Cắt ngắn từng bảng một. Tất cả những điều này đạt được những gì tôi muốn bằng cách không xóa bộ nhớ hiện đang bị chiếm đóng. Kích thước cơ sở dữ liệu của tôi thay đổi từ khoảng 300MB đến 2GB. Vì vậy sau một lần lặp lại, RAM của tôi là khoảng 1 GB bị chiếm đóng và không tìm thấy bất kỳ giải pháp nào về nguyên nhân của việc này hoặc độ phân giải.

Hơi giống với điều này Clear the in memory database after every testcase. Nhưng không có dbUnit và cũng cần xóa RAM.

Có thể thực hiện việc này mà không cần dừng JVM hay không.

Cảm ơn.

+1

Bạn có thể thực thi câu lệnh 'shutdown'. Điều này sẽ đóng kết nối và cơ sở dữ liệu. –

+0

Cảm ơn nó đã hoạt động. Đó là những gì tôi đang tìm kiếm. – Akalanka

+0

OK, tôi đã thêm nhận xét làm câu trả lời ngay bây giờ. –

Trả lời

4

Bạn có thể thực hiện câu lệnh shutdown. Điều này sẽ đóng kết nối và cơ sở dữ liệu.

+0

Xin chào, Xin lỗi vì đã gây phiền hà. Nhưng giải pháp đã làm việc vài lần khi tôi cố gắng. Nhưng đôi khi nó không hoạt động. Java.exe của tôi quá trình java.exe cho thấy đã chiếm 1.1 GB khi chạy. Sau khi lệnh shutdown đã được thực hiện, nó đã giảm xuống còn khoảng 80 MB, đó là mức trung bình mà chương trình của tôi sử dụng. Nhưng tôi thấy rằng trong cửa sổ quản lý tác vụ mặc dù quá trình sử dụng bộ nhớ đã được giảm bộ nhớ vật lý của tôi đã không được giải phóng. Nó giải phóng khoảng 1,1 GB chỉ sau khi tôi tự kết thúc quá trình java.exe được sử dụng. – Akalanka

+0

Tôi đã thử vài lần sử dụng SHUTDOWN, SHUTDOWN COMPACT, SHUTDOWN IMMEDIATELY và DROP ALL OBJECTS với sự kết hợp của từng đối tượng trước. Nhưng kết quả vẫn như nhau và đôi khi quá trình java.exe cũng không làm giảm bộ nhớ là tốt. Nó giữ bộ nhớ phân bổ của 1.1GB như nó được. Bạn đã bao giờ gặp điều này hay tôi đang làm điều gì sai. Hãy giúp tôi. – Akalanka

+0

Bạn đo mức sử dụng bộ nhớ như thế nào? Java không trả lại bộ nhớ heap không sử dụng cho hệ điều hành. Nhưng tôi tự hỏi nếu đó thực sự là một vấn đề cho bạn. –

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