2013-02-18 21 views
10

Tôi mới dùng weblogic. Sau khi khởi động máy chủ khi tôi thấy bảng điều khiển dành cho quản trị viên và đăng nhập, máy chủ sẽ ném bên dưới ngoại lệ.đối mặt với lỗi không gian bộ gen trong weblogic

Root cause of ServletException. 
java.lang.OutOfMemoryError: PermGen space 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:335) 
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:288) 
Truncated. see log file for complete stacktrace 

tôi đã làm rất nhiều google và tìm thấy một số giải pháp để khởi tạo JAVA_OPTIONS như -XX:xmx và vv Tôi cố gắng để thiết lập này trong startdomainenv.cmd tập tin nhưng không có may mắn.

Vui lòng trợ giúp. Mọi con trỏ sẽ được đánh giá cao.

Cảm ơn.

+0

[Xem] (http://stackoverflow.com/q/13428920/1037210) . – Lion

Trả lời

12

Để đặt PermGen kích thước bạn có thể sử dụng, ví dụ: -XX:PermSize=512m -XX:MaxPermSize=512m.

Liên quan đến Weblogic, đặt JAVA_OPTIONS và xem các tùy chọn này có được chuyển đúng như tham số vào quy trình Java của bạn hay không. Bạn cũng có thể trực tiếp thiết lập các tham số này trong tập lệnh startWeblogic.cmd.

Để kiểm tra xem JAVA_OPTIONS của bạn đã được đặt đúng chưa, hãy thêm echo %JAVA_OPTIONS% vào tập lệnh startWeblogic.cmd và xem kết quả. Ngoài ra, bạn có thể sử dụng ví dụ: jConsole, jstat hoặc jmap để giám sát Sử dụng quá trình weblog trong quá trình chạy. Điều này sẽ cho bạn thấy kích thước và sự chiếm đóng của PermGen.

+0

cảm ơn bạn.Đó hiện đang hoạt động – nakul

+0

Công trình này, hãy cẩn thận vì JAVA_OPTIONS sẽ ảnh hưởng đến tất cả java trên máy của bạn có thể sử dụng biến hệ thống này. Nếu vấn đề cụ thể đối với Weblogic, hãy thay đổi setDomainEnv.cmd thành Dileep. Tôi chỉ đề cập đến điều này bởi vì tôi đặt biến này để làm cho nó hoạt động, chỉ để gây ra vấn đề với các phiên bản java khác của tôi cho các nỗ lực mã khác. –

6

Bạn có thể thử bằng cách thay đổi cài đặt bộ nhớ của weblogic trong máy chủ của bạn. * Tới - <weblogic path>\Middleware\user_projects\domains\fms_domain\bin\setDomainEnv.cmd * Mở tập tin * Thay đổi các thiết lập

if "%JAVA_VENDOR%"=="Sun" (
set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m 
set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m 
) else (
set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m 
set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m 
) 

Thay đổi các thiết lập theo yêu cầu và môi trường của bạn.

3

để hoàn thành phản ứng của user267 bạn phải thay đổi thêm: bộ MEM_MAX_PERM_SIZE_64BIT = -XX: MaxPermSize = 256M

bộ MEM_MAX_PERM_SIZE_32BIT = -XX: MaxPermSize = 256M

0

Trong trường hợp của tôi là giải pháp là để chỉnh sửa tệp DOMAIN\bin\setDomainEnv.cmd. Các sửa đổi sau đây đã được thực hiện trước khi máy chủ sẽ bắt đầu như dự định:

  • các -Xms-Xmx giá trị được tăng
  • các -XX:PermSize-XX:MaxPermSize giá trị được tăng quá

và Cuối cùng, nhưng có lẽ quan trọng nhất

  • các điều kiện if "%JAVA_VENDOR%"=="Sun" ( đã được thay đổi thành if "%JAVA_VENDOR%"=="Oracle" ( để nhận dạng đúng JVM của tôi.

Trước sửa đổi cuối cùng, thay đổi bộ nhớ chỉ phản ánh một phần cho JVM khởi tạo và điều này có nghĩa là các tham số liên quan đến không gian PermGen bị bỏ qua.

0

Tôi chỉ muốn chia sẻ những gì đã giải quyết được vấn đề cho tôi: Tôi có nguồn setDomainEnv.sh và echo $ {JAVA_OPTIONS} và nhận thấy rằng các đối số MEM không có ở đó.

Vì vậy, tôi đã thêm MEM_ARGS vào thiết lập cuối cùng của JAVA_OPTIONS.

Giống như vậy:
JAVA_OPTIONS = "$ {JAVA_OPTIONS} $ {MEM_ARGS}" JAVA_OPTIONS xuất khẩu

Cheers

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