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?
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?
Câu trả lời:
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
sudo gedit ~/.profile
hãy thêm dòng từ câu trả lời vào đó và lưu tệp.
sudo
chỉ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.
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 PermSize
và MaxPermSize
đượ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.
-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:MaxMetaspaceSize
tù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:MetaspaceSize
tùy chọn này.
MaxPermGen
vớ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 MaxMetaspace
kí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
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.
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
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.xml
tệ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>
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:
Đố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