Tôi vừa cập nhật Android Studio lên 3.5 Beta 1 và tôi đang nhận được
Daemon hết hạn vì không gian heap JVM đã hết
trong khi bản dựng đang chạy. Ngoài ra, quá trình xây dựng cần nhiều thời gian hơn để hoàn thành. Có ai có bất kỳ ý tưởng về điều này?
Tôi vừa cập nhật Android Studio lên 3.5 Beta 1 và tôi đang nhận được
Daemon hết hạn vì không gian heap JVM đã hết
trong khi bản dựng đang chạy. Ngoài ra, quá trình xây dựng cần nhiều thời gian hơn để hoàn thành. Có ai có bất kỳ ý tưởng về điều này?
Câu trả lời:
Tôi đã có thể giải quyết vấn đề này cho dự án React Native của mình bằng cách định cấu hình như sau:
// gradle.properties
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
và
// app/build.gradle
android {
dexOptions {
javaMaxHeapSize "3g"
}
}
Điều này có thể được khắc phục bằng cách tăng kích thước heap tối đa đã định cấu hình cho dự án.
Thông qua IDE:
Thêm các dòng dưới đây vào tệp gradle.properties. Kích thước bộ nhớ dưới đây có thể được cấu hình dựa trên tính khả dụng của RAM
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m
Thông qua GUI:
Trong Cài đặt, tìm kiếm 'Cài đặt Bộ nhớ' và tăng kích thước heap tối đa IDE và kích thước heap tối đa Daemon tùy theo tính khả dụng của RAM hệ thống.
Giải pháp là tăng bộ nhớ xây dựng Android.
Khi bạn thêm nhiều mô-đun hơn vào ứng dụng của mình, có một nhu cầu đáng kinh ngạc đặt lên hệ thống xây dựng Android và cài đặt bộ nhớ mặc định sẽ không hoạt động. Để tránh OutOfMemoryErrors trong các bản dựng Android, bạn nên bỏ ghi chú cài đặt bộ nhớ gradle thay thế có trong /android/gradle.properties :
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Bạn có thể tìm thấy gradle.properties bên trong thư mục android .
PS
Chúng tôi đang làm gì và tại sao nó lại giúp ích?
Hãy để tôi giải thích một số thuật ngữ cơ bản để hiểu toàn bộ vấn đề.
Daemon : - Daemon là một chương trình máy tính chạy như một tiến trình nền, thay vì chịu sự kiểm soát trực tiếp của một người dùng tương tác.
Android Studio 2.1 kích hoạt một tính năng mới: Dex In Process , có thể tăng đáng kể tốc độ của các bản dựng hoàn toàn sạch cũng như cải thiện hiệu suất Instant Run.
Để tận dụng lợi thế của Dex In Process , bạn sẽ cần sửa đổi tệp gradle.properties của mình và tăng dung lượng bộ nhớ được cấp cho máy ảo Gradle Daemon lên 1 Gb, lên tối thiểu 2 Gb, sử dụng thuộc tính org.gradle.jvmargs :
Chỉ định các đối số JVM được sử dụng cho quy trình daemon. Cài đặt này đặc biệt hữu ích để điều chỉnh cài đặt bộ nhớ.
org.gradle.jvmargs=-Xmx2048m
Giá trị mặc định:
-Xmx10248m -XX:MaxPermSize=256m
Phân bổ bộ nhớ Gradle Daemon VM mặc định là 1 gigabyte - không đủ để hỗ trợ dexInProcess, vì vậy để tận dụng lợi thế, bạn cần đặt nó thành ít nhất 2 gigabyte.
Dex in process hoạt động bằng cách cho phép nhiều quy trình DEX chạy trong một máy ảo duy nhất cũng được chia sẻ với Gradle, đó là lý do tại sao bạn cần phân bổ bộ nhớ bổ sung trước khi nó có thể được kích hoạt - bộ nhớ đó sẽ được chia sẻ giữa Gradle và nhiều quy trình DEX.
Nếu bạn đã tăng javaMaxHeapSize trong tệp build.gradle cấp mô-đun của mình vượt quá mặc định là 1 gigabyte, bạn sẽ cần tăng bộ nhớ được gán cho Gradle Daemon tương ứng.
Khi có đủ bộ nhớ được chỉ định, Dex in Process được bật theo mặc định, cải thiện hiệu suất xây dựng tổng thể và loại bỏ chi phí khởi động nhiều phiên bản VM song song . Kết quả là một sự cải thiện đáng kể trong tất cả các lần xây dựng, bao gồm Chạy tức thì, các phiên bản tăng dần và đầy đủ.
Nguồn: https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8vào gradle.properties. Nếu vẫn không hoạt động thì xin lỗi tôi không biết làm thế nào để khắc phục điều đó.
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8trong android/gradle.propertieslika làm việc một sự quyến rũ. Cảm ơn!! @KailashUniyal