Khắc phục: Lỗi xảy ra trong quá trình khởi tạo VM không thể đặt trước đủ dung lượng cho đối tượng heap

Mặc dù Java applet không phải là một công nghệ web phổ biến những ngày này, có vô số lý do để triển khai một máy ảo Java trực tiếp trên một máy chủ Linux. Nếu bạn cố gắng chạy lệnh java Linux ngay lập tức hoặc trên phần cứng rời rạc hoặc bên trong của máy ảo riêng của nó, thì bạn có thể gặp phải một lỗi xảy ra trong quá trình khởi tạo VM không thể dành đủ dung lượng cho thông điệp heap đối tượng.

Điều này có vẻ khá kỳ quặc bởi vì bạn có nhiều khả năng có đủ RAM để chạy lệnh, nhưng nó phần lớn là do một quirk cụ thể trong cách mà các trang bộ nhớ vật lý và ảo được sử dụng. Chỉ định một số kích thước tương đối lớn sẽ cho phép bạn hoàn toàn bỏ qua thông báo này và chạy lệnh java theo cách bạn muốn.

Phương pháp 1: Sử dụng tùy chọn dòng lệnh

Nếu bạn đã cố gắng chạy java và nhận được thông báo này, thì có thể bạn đã chạy lệnh miễn phí để đảm bảo rằng có nhiều nguồn cung cấp bộ nhớ để chạy chương trình.

Lưu ý rằng trên máy thử nghiệm của chúng tôi, chúng tôi có khoảng 2, 3 GB RAM vật lý và không phải là một trang bộ nhớ ảo đã được sử dụng. Nếu bạn nhận thấy rằng bạn có một cuộc khủng hoảng bộ nhớ, sau đó bạn sẽ muốn đóng những thứ khác mà bạn đã chạy trước khi thử lại. Mặt khác, những người nhận thấy rằng họ có nhiều bộ nhớ trống có thể cố gắng chỉ định kích thước trực tiếp.

Ví dụ, trên máy tính của chúng tôi, chúng tôi đã có thể chạy lệnh dưới dạng java -Xms256m -Xmx512M và nó hoạt động như mong đợi. Điều này hạn chế kích thước heap mà máy ảo Java cố gắng dự trữ khi khởi động. Kể từ khi một máy ảo tự do có thể giả thuyết làm những điều bất thường, nó có thể ném thông báo lỗi trên một hệ thống khác miễn phí. Bạn cũng có thể muốn chơi xung quanh với hai giá trị trước khi bạn tìm thấy sự kết hợp phù hợp.

Đây có thể là một vấn đề bất kể bạn đang chạy nó vì JVM không liên quan gì đến loại máy ảo mà bạn có thể đang sử dụng để chạy GNU / Linux.

Mẹo CHUYÊN NGHIỆP: Nếu vấn đề xảy ra với máy tính của bạn hoặc máy tính xách tay / máy tính xách tay, bạn nên thử sử dụng phần mềm Reimage Plus có thể quét các kho lưu trữ và thay thế các tệp bị hỏng và bị thiếu. Điều này làm việc trong hầu hết các trường hợp, nơi vấn đề được bắt nguồn do một tham nhũng hệ thống. Bạn có thể tải xuống Reimage Plus bằng cách nhấp vào đây

Phương pháp 2: Xuất các biến để thực hiện thay đổi vĩnh viễn

Khi bạn tìm thấy một giá trị hoạt động, bạn có thể xuất giá trị đó thành giá trị vĩnh viễn cho phiên đó. Ví dụ, chúng tôi sử dụng xuất _JAVA_OPTIONS = '- Xms256M -Xmx512M' từ dấu nhắc lệnh bash và nó cho phép chúng tôi chạy lệnh java mà không cần bất kỳ tùy chọn nào khác cho đến khi chúng tôi đăng xuất khỏi máy chủ của chúng tôi.

Nó cần phải chạy lại khi chúng ta đăng nhập vào một phiên khác, vì vậy bạn có thể muốn thêm nó vào bất kỳ kịch bản khởi động có liên quan nào nếu bạn định sử dụng lệnh java khá thường xuyên. Chúng tôi đã thêm dòng vào tệp .bash_login của chúng tôi và dường như nó hoạt động mỗi khi chúng tôi sử dụng dấu nhắc đăng nhập mà không phải chạy lại, mặc dù bạn có thể phải tìm một vị trí khác cho nó nếu bạn đang làm việc với một trình bao khác.

Bạn có thể nhận thấy rằng chỉ một số cấu hình phần cứng nhất định kích hoạt thông báo lỗi này. Đó là bởi vì nó thường xảy ra trên các máy có rất nhiều RAM vật lý nhưng thấp hơn các vết loét về cách sử dụng nó. Java sẽ cố gắng phân bổ một khối lớn chỉ để được nói với nó không thể, mà nó diễn giải khi hết bộ nhớ.

Phương pháp 3: In các tùy chọn Java hiện tại

Nếu bạn đã làm việc ở dòng lệnh và muốn tham khảo nhanh về những gì bạn hiện đang đặt giá trị _JAVA_OPTIONS, thì chỉ cần chạy echo $ _JAVA_OPTIONS và nó sẽ ngay lập tức in ra các giá trị hiện tại. Điều này rất hữu ích để khắc phục sự cố khi bạn đang cố gắng tìm ra các chữ số phù hợp để thử.

Hãy nhớ rằng trong khi sửa chữa này không yêu cầu bất kỳ chơi nào khác xung quanh, Java sẽ ném ra không thể dành đủ không gian cho tin nhắn heap đối tượng nếu bạn đã từng thấy mình thực sự vào cuối bộ nhớ ảo. Nếu đây là trường hợp, sau đó bạn sẽ muốn kiểm tra lại những gì các tiến trình hiện đang chạy và có thể khởi động lại máy chủ nếu đó là một tùy chọn. Bạn cũng có thể tạo thêm không gian hoán đổi, nhưng nếu đây là vấn đề thì tốt hơn bạn nên thử và sửa nó theo cách khác.

Trong trường hợp hiếm hoi cài đặt của bạn có vẻ đúng nhưng vẫn không hoạt động, hãy đảm bảo bạn đã cài đặt gói Java 64 bit vì nó sẽ miễn nhiễm với vấn đề này. Các yêu cầu bộ nhớ tiếp giáp chỉ áp dụng cho phiên bản Java 32 bit. Chúng tôi tìm thấy trong một số ít các trường hợp phiên bản 64-bit đã cố gắng để tạo ra một máy ảo 32-bit, do đó, xác định tùy chọn -d64 trên dòng lệnh cố định nó cho chúng tôi.

Mẹo CHUYÊN NGHIỆP: Nếu vấn đề xảy ra với máy tính của bạn hoặc máy tính xách tay / máy tính xách tay, bạn nên thử sử dụng phần mềm Reimage Plus có thể quét các kho lưu trữ và thay thế các tệp bị hỏng và bị thiếu. Điều này làm việc trong hầu hết các trường hợp, nơi vấn đề được bắt nguồn do một tham nhũng hệ thống. Bạn có thể tải xuống Reimage Plus bằng cách nhấp vào đây

Facebook Twitter Google Plus Pinterest