Cảnh báo máy chủ 64-bit Java HotSpot (TM): bỏ qua tùy chọn MaxPermSize


132

Khi xây dựng dự án Java 8 với Maven:

mvn clean package

Tôi nhận được tin nhắn này:

Cảnh báo máy chủ 64-bit Java HotSpot (TM): bỏ qua tùy chọn MaxPermSize = 128m; hỗ trợ đã bị xóa trong 8.0

Làm thế nào để loại bỏ tin nhắn này?


2
Xem bug.java.com/bugdatabase/view_orms.do?orms_id=6964458 để biết mô tả đầy đủ
Dag

1
Bạn có thể đã có một phiên bản IDEA đang chạy. [1]: stackoverflow.com/a/20553943/3741698
David Hackro

Câu trả lời:


163

Hướng dẫn tương thích cho JDK 8 nói rằng trong Java 8, cờ dòng lệnh MaxPermSizeđã bị xóa. Lý do là thế hệ vĩnh viễn đã bị xóa khỏi đống điểm nóng và được chuyển sang bộ nhớ riêng. Vì vậy, để xóa thông báo này, hãy chỉnh sửa Biến người dùng môi trường MAVEN_OPTS :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m

13
Và lý do là toàn bộ không gian PermGen đã bị xóa trong JRE 8, AFAIK của Oracle.
Puce

1
Nếu ai đó không biết cách thực hiện việc này - sudo gedit ~/.profilehãy thêm dòng từ câu trả lời vào đó và lưu tệp.
gotqn

Tôi có tùy chọn này được đặt trong tệp ~ / .bashrc
paka

@gotqn Tại sao bạn sudochỉnh sửa một tập tin trong thư mục nhà của bạn? Có vẻ như thực hành rất kỳ lạ với tôi.
Per Lundberg

22

Các JDK 8 HotSpot JVM hiện đang sử dụng bộ nhớ bản địa cho các đại diện của siêu dữ liệu lớp và được gọi là Metaspace .

Thế hệ vĩnh viễn đã được gỡ bỏ. Các PermSizeMaxPermSizeđược bỏ qua và một cảnh báo được đưa ra nếu chúng có mặt trên dòng lệnh.


Điều này chỉ gián tiếp trả lời câu hỏi ... Câu trả lời là "xóa cờ để xóa cảnh báo". Như nhận xét sâu sắc của @ ohad-schneider tiết lộ, không có ai thay thế họ.
Conny

10
-XX:MaxPermSize=size

Đặt kích thước không gian tạo vĩnh viễn tối đa (tính bằng byte). Tùy chọn này không được chấp nhận trong JDK 8 và được thay thế bởi -XX:MaxMetaspaceSizetùy chọn này.

-XX:PermSize=size

Đặt không gian (tính bằng byte) được phân bổ cho thế hệ cố định kích hoạt bộ sưu tập rác nếu vượt quá. Tùy chọn này không được chấp nhận trong JDK 8 và được thay thế bởi -XX:MetaspaceSizetùy chọn này.


12
Tôi nghĩ rằng đây là downvoted vì nó ngụ ý rằng bạn nên chuyển sang sử dụng trước đây MaxPermGenvới MaxMetaSpaceSizeđó là sai lầm, vì vai trò của họ đã thực tế đảo ngược. Trước khi không gian siêu dữ liệu của lớp 8 nằm trong PermGen, bị giới hạn bởi 32 / 64MB và MaxPerGenđược sử dụng để tăng nó. Tuy nhiên, bắt đầu từ Java 8, PermGen không còn nữa và không gian siêu dữ liệu lớp là không giới hạn, vì vậy MaxMetaspacekích thước thực sự được sử dụng để giảm nó. Để biết thêm thông tin, hãy xem: stackoverflow.com/a/31463972/67824
Ohad Schneider

8

Trong JBoss EAP 6.4, nhấp chuột phải vào máy chủ và mở cấu hình khởi chạy theo đối số VM bạn sẽ tìm thấy

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}

cập nhật nó lên

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}

Điều này sẽ giải quyết vấn đề của bạn.


1

Tôi nhận được thông báo tương tự khi chạy dòng lệnh mvn (phiên bản 3.3.3) trên Linux với Java 8. Bằng cách mở tập lệnh maven / $ MAVEN-HOME / bin / mvn, đã tìm thấy dòng sau

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

Trong đó $ MAVEN_PROJECTBASEDIR theo mặc định là thư mục chính của bạn. Vì vậy, hai nơi bạn có thể xem, đầu tiên là tệp $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config nếu nó tồn tại. Thứ hai, xem xét các tệp có thể thiết lập biến môi trường MAVEN_OPTS. Các tệp ứng cử viên là .bashrc, .bash_profile, .profile và các tệp được bao gồm bởi chúng như / etc / profile, /etc/bash.bashrc

Tôi nằm

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

trong .bashrc trong hệ thống của tôi, thay đổi nó thành

export MAVEN_OPTS="-Xmx512m"

Vấn đề đã được giải quyết


1

trong trường hợp một số người vẫn nhận được loại tin nhắn này. Nó xảy ra bởi vì bạn thêm đối số JVM khi chạy dự án maven. Bởi vì nó có liên quan đến maven, bạn có thể kiểm tra pom.xmltệp của bạn trong dự án của bạn.

Tìm dòng này <argLine>...</argLine>, trong dự án của tôi, tôi cũng có đối số dưới đây

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

bạn nên thay thế MaxPermSizeđối số vì -Xms123m -Xmx123m, vì MaxPermSizeđã không dùng nữa và sẽ không ảnh hưởng gì đến cấu hình JVM của bạn:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

-1

Vui lòng giải quyết vấn đề này, chúng tôi vừa thiết lập đường dẫn JDK đã cài đặt trong

độc lập

tệp trong thư mục bin của JBoss \ Wildfly Server. Để giải quyết điều này, chúng tôi thực hiện các bước sau:

  1. Mở standlone.conf tập tin mà theo JBoss_or_wildfly \ thư mục bin
  2. Trong tệp này, tìm văn bản #JAVA_HOME .
  3. Xóa ký tự # và đặt đường dẫn JDK đã cài đặt của bạn là JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_65" Hy vọng điều này sẽ giải quyết vấn đề của bạn Cảm ơn

Vấn đề ban đầu là trong một dự án maven. Nó không có gì để làm với JBoss.
Boris

-5

Đối với người dùng Eclipse ...

Bấm Chạy -> Chạy cấu hình -> là -> đặt JRE thay thế cho 1.6 hoặc 1.7

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.