Android source code compile error: “Try increasing heap size with java option '-Xmx<size>'”

Error happens when I try to compile Android source code(Sourcecode-version: 6.0.1; RAM: 6G; host system: ubuntu 14.04),log is below:

including ./system/netd/Android.mk ...
including ./system/security/keystore-engine/Android.mk ...
including ./system/security/keystore/Android.mk ...
including ./system/security/softkeymaster/Android.mk ...
including ./system/tools/aidl/Android.mk ...
including ./system/update_engine/Android.mk ...
including ./system/vold/Android.mk ...
including ./system/weaved/Android.mk ...
including ./system/webservd/Android.mk ...
including ./tools/external/fat32lib/Android.mk ...
Starting build with ninja
ninja: Entering directory `.'
[  0% 1/21275] Ensure Jack server is installed and started
Jack server already installed in "/home/eddy/.jack-server"
Launching Jack server java -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/eddy/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
[  0% 17/21275] host Java: conscrypt-host (out/host/common/obj/JAVA_LIBRARIES/conscrypt-host_intermediates/classes)
warning: [options] bootstrap class path not set in conjunction with -source 1.7
external/conscrypt/src/openjdk/java/org/conscrypt/Platform.java:39: warning: AlgorithmId is internal proprietary API and may be removed in a future release
import sun.security.x509.AlgorithmId;
                        ^
external/conscrypt/src/openjdk/java/org/conscrypt/Platform.java:243: warning: AlgorithmId is internal proprietary API and may be removed in a future release
            return AlgorithmId.get(oid).getName();
                   ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
[  0% 18/21275] host Java: signapk (out/host/common/obj/JAVA_LIBRARIES/signapk_intermediates/classes)
warning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
[  0% 73/21275] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex
FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
GC overhead limit exceeded
Try increasing heap size with java option '-Xmx<size>'
Warning: This may have produced partial or corrupted output.
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] Error 1

#### make failed to build some targets (14:09 (mm:ss)) ####

eddy@eddy-OptiPlex-390:~/WORKING_DIRECTORY$ 

Anyone can tell me why the compiling failed?

  • detecting a click on action bar back button -(OnOptionsItemSelected not calling when click on action bar back button)
  • Adb android conflict with Genymotion
  • android service notify activity completed best way?
  • How do I keep a Service alive indefinitely
  • What is the equivalent of “android:fontFamily=”sans-serif-light" in Java code?
  • Set ListView row height in code
  • Related posts:

    Android record exists() in database?
    Setting splitActionBarWhenNarrow from Java on Android
    Android Studio - Action Bar remove
    How to delete user installed certificate programmatically?
    Inflated ImageView to put in GalleryView isn&#039;t the right size
    google api client callback is never called
  • Android RecyclerView.Adapter onCreateViewHolder() working
  • Android 4.4 WebView file chooser not opening?
  • org.eclipse.swt.SWTException: “Widget is disposed” when trying to open AndroidManifest.xml
  • Limit the Length of TextView
  • Debugger disconnecting in Android Studio when debugging a home screen widget
  • Saving public files in the internal storage
  • 6 Solutions collect form web for “Android source code compile error: “Try increasing heap size with java option '-Xmx<size>'””

    I had the same problem. So I’ve tried to set JACK_SERVER_VM_ARGUMENTS to include -Xmx=4g, but when building again the log output showed that this was not included in the startup. Dunno why, seems like the env vars do not get passed to the build script correctly.

    Solution

    Before starting a clean android build set the JACK_SERVER_VM_ARGUMENTS to include -Xmx=4g, then stop and start the jack server manually. Given you’re in the main source tree of AOSP run the following:

    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
    ./prebuilts/sdk/tools/jack-admin kill-server
    ./prebuilts/sdk/tools/jack-admin start-server
    

    for cm you can use

    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
    jack-admin kill-server && jack-admin start-server
    

    This resolved the issue for me.

    The current way to set Xmx for jack is:

    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
    out/host/linux-x86/bin/jack-admin kill-server
    out/host/linux-x86/bin/jack-admin start-server
    

    I also had this problem after updating to 6.0 My computer is an i7 laptop with 8GB of ram. It worked fine with v5.x and below.

    The reason is not enough memory as the error message states. In the v6.x build, more Jack is used. In my case, reducing the number of Jacks to 1 resolved the issue.

    I can now continue compiling with 8GB of ram.

    $HOME/.jack-server/config.properties
        jack.server.max-service=1
    
    [100% 19740/19740]
    #### make completed successfully (11:55:27 (hh:mm:ss)) ####
    

    This was also my problem: the java default Xmx setting was already close to 4GB (precisely: 4011MB) so the issue was rather the number of concurrent jack servers running. My machine had 8 CPUs but only 16GB of RAM, but would have required 32GB (8*4=32).

    My (slightly more dynamic) solution:

    MAX=$(($(free -g | awk '/^Mem:/{print $NF}') / 4))
    if [ $MAX -le 0 ]; then
        MAX=1
    fi
    echo "SERVER_NB_COMPILE=$MAX" >> ~/.jack
    mkdir -p ~/.jack-server
    echo "jack.server.max-service=$MAX" >> ~/.jack-server/config.properties
    

    It adds the MAX number of jack server to both the old-location and new-location based on the android official doc:

    Jack Troubleshooting: If your computer becomes unresponsive during compilation or if you experience Jack compilations failing on “Out of memory error”, you can improve the situation by reducing the number of Jack simultaneous compilations by editing your $HOME/.jack and changing SERVER_NB_COMPILE to a lower value. https://source.android.com/source/jack.html

    Android build (tested with 7.1.2) uses its own, private version of Jack (there could be a Jack toolchain installed elsewhere on the system), so you have to use Android-specific variables.

    From https://android.googlesource.com/platform/prebuilts/sdk/+/master/tools/README-jack-server.md:

    (search for “If you experience Jack compilations failing on Out of memory error.:”)

    To summarize:

    $ # Stop the Jack server
    $ jack-admin stop-server
    $ # apply the new setting
    $ export ANDROID_JACK_VM_ARGS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation"
    $ Finally, restart the build (do not manually start the Jack server!)
    $ m # or any other build command
    

    The build system should pick up the change and output the line:

    Environment variable ANDROID_JACK_VM_ARGS was set, regenerating...
    

    or (after a subsequent change):

    Environment variable ANDROID_JACK_VM_ARGS was modified (-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation => -Xmx4g -Dfile.encoding=UTF-8 -XX:+TieredCompilation), regenerating...
    

    /bin/bash /home/anam/lineage/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
    Out of memory error (version 1.2-rc4 ‘Carnac’ (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
    GC overhead limit exceeded.
    Try increasing heap size with java option ‘-Xmx’.
    Warning: This may have produced partial or corrupted output.
    [ 7% 2270/30553] Building with Jack: /home/anam/lin…LIBRARIES/calendar-common_intermediates/classes.jack
    ninja: build stopped: subcommand failed.
    make: *** [build/core/ninja.mk:152: ninja_wrapper] Error 1
    make: Leaving directory ‘/home/anam/lineage’

    make failed to build some targets (18:59 (mm:ss))

    root@instance-1:/home/anam/lineage#

    same error above solutions not working 🙁

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.