Theo mặc định, <javac>
chạy trong quá trình với Ant. Đó là một giới hạn chung của Java mà bạn không thể điều chỉnh quy trình JVM 'Xms
và Xmx
khi quá trình JVM đã khởi chạy. Vì vậy, thông báo lỗi mà bạn đang nhìn thấy là phần mềm từ chối nỗ lực của bạn để vi phạm nguyên tắc này (sử dụng một, thông báo lỗi không thân thiện vô ích.)
Tuy nhiên, nếu bạn chỉ định các thuộc tính fork="true"
trên thẻ <javac>
bạn sẽ có thể chỉ định Xms
và Xms
mới. Điều này là do fork
hướng dẫn Ant khởi chạy một quy trình con JVM mới để chạy javac
. Bởi vì quá trình JVM là mới, nó mang lại cho Ant một cơ hội chấp nhận được để chỉ định Xms
và Xmx
cho nó.
Bạn có thể thử một cái gì đó như thế này:.
<project name="project" default="all" basedir="[yourvalue]">
<target name="all">
<javac srcdir="[yourvalue]" destdir="[yourvalue]" fork="true">
<!-- javac requires that -Xmx and -Xms be prefixed with -J -->
<compilerarg line="-J-Xms128m -J-Xmx512m" />
</javac>
</target>
</project>
(Chú Tôi đang sử dụng compilerarg line=""
hơn compilerarg value=""
Thuộc tính line
cho phép bạn xác định nhiều đối số không gian tách Thuộc tính value
là cho đi qua một. đối số duy nhất.)
Ant sẽ đợi thanh chia <javac>
để thoát, điều này xảy ra sau khi quá trình javac
hoàn tất công việc của mình (tức là biên dịch). Ant sau đó tiếp tục chạy kịch bản xây dựng bên trong quá trình JVM ban đầu của riêng nó. Ant sẽ kiểm tra xem ngã rẽ javac
bị lỗi hay thành công hay không và thực hiện các hành động thông thường dựa trên thông tin này.
Performance
Nó thường performant hơn để không ngã ba javac
, và thay vào đó chỉ đơn giản là điều chỉnh các thiết lập bộ nhớ có liên quan cho ban đầu Ant JVM tổng thể. Điều này thường (nhưng không phải lúc nào) là sự lựa chọn tốt nhất bởi vì khởi chạy một JVM riêng biệt thường chậm hơn và mất nhiều bộ nhớ hơn chỉ đơn giản là cho phép javac
chạy trong tiến trình.
Nếu bạn đang sử dụng Ant-cung cấp ant.bat
hoặc ant.sh
để khởi động Ant, một cách dễ dàng để điều chỉnh Ant Xms
và Xmx
là xác định môi trường ANT_OPTS biến để chứa các đối số mà bạn muốn. Có nhiều cách để đặt biến môi trường, nhưng bạn chỉ có thể chỉnh sửa ant.bat
:
set ANT_OPTS=-Xms128m -Xmx512m
Nguồn
2010-11-09 15:39:39
có phải lỗi sao chép/dán có giá trị khác với giá trị được cung cấp (32m/128m) không? –
Có thể bạn cần phải vượt qua từng đối số trong một phần tử riêng biệt? –
ZeissS
@ZeissS: phần tử ' ' riêng biệt gây ra lỗi giống nhau không may –