Tôi có một ứng dụng JRuby on Rails đang chạy bên trong Tomcat (Warble). Nó sử dụng một cây cầu Java để kết nối với một máy chủ ứng dụng Progress (OpenEdge) ... Khi tôi theo dõi bộ nhớ, nó chỉ tiếp tục đi lên.Tại sao bộ nhớ không bao giờ được phát hành trong ứng dụng JRuby Tomcat của tôi?
- Tomcat 7.0
- JRuby 1.6.7.2 (Ruby-1.9.2-p312)
- JVM 1.7.0.25
- Rails 3.2.7
- JRuby-rack 1.1.7
- warbler 1.3.6
Cách tốt nhất để đến đáy của vấn đề ở đây là gì? Tôi đoán nó có thể hoặc là các đối tượng JRuby không được làm sạch, hoặc một cái gì đó trong cây cầu Java hoặc Garbage collector mà không làm công việc của mình ...
Thậm chí nếu tôi để quá trình chạy trong nửa giờ , bộ nhớ không bị hỏng ...
- Có cách nào để biết đối tượng nào còn hoạt động không?
- Có công cụ miễn phí nào dễ sử dụng mà tôi có thể có thêm thông tin về ai đang sử dụng tất cả bộ nhớ không?
Bằng cách này, tôi đã có cấu hình máy chủ Tomcat để sử dụng nhiều bộ nhớ hơn, nhưng đó chỉ là trì hoãn một lỗi không gian đống ...
EDIT: Những gì tôi đang thực sự nhìn thấy là chỉ sử dụng Tomcat tất cả bộ nhớ mà nó có thể sử dụng tối đa (Maximum memory pool). Và nó không bao giờ phát hành nó. Có lẽ nó chỉ là hành vi bình thường ... Tôi đã thiết lập tối đa 256MB ví dụ và trong Task Manager, bộ nhớ chỉ ở mức 256MB.
EDIT:
Khi tạo một đống đổ và để thực phân tích nó với Eclipse Memory Analyzer này là báo cáo tôi nhận được. Tôi nghĩ đó là bình thường vì công cụ này có lẽ không mong đợi những câu chuyện toàn JRuby ...
vấn đề nghi ngờ 1
6,458 trường hợp của "org.jruby.RubyClass", nạp bởi "org.apache. catalina.loader.WebappClassLoader @ 0x700ec6988 "chiếm 56,969,616 (31,78%) byte.
Từ khóa org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988 org.jruby.RubyClass
vấn đề nghi ngờ 2
10,597 trường hợp của "org.jruby.internal.runtime.methods. DefaultMethod ", được tải bởi" org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988 "chiếm 22.182.112 (12,37%) byte.
Từ khóa org.jruby.internal.runtime.methods.DefaultMethod org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988
vấn đề nghi ngờ 3
3,144 trường hợp của "org.jruby.RubyModule", nạp bởi "org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988" chiếm 21.226.816 (11,84 %) byte.
Từ khóa org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988 org.jruby.RubyModule
vấn đề nghi ngờ 4
8,888 trường hợp của "org.jruby.MetaClass", nạp bởi " org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988 "chiếm 18,563,784 (10,35%) byte.
Từ khóa org.jruby.MetaClass org.apache.catalina.loader.WebappClassLoader @ 0x700ec6988
Vấn đề cụ thể là gì? Bạn có hết bộ nhớ không? Phiên bản nào của JRuby? Phiên bản nào của Rails? Vv Không có một "3.7" của bất kỳ của những người. –
Vấn đề cụ thể là: ERROR Java Heap Space. Không có thêm thông tin nào trong nhật ký. –
Tôi sẽ cập nhật câu hỏi của mình với tất cả các phiên bản cụ thể. –