How do I set Java's min and max heap size through environment variables?

后端 未结 7 1832
抹茶落季
抹茶落季 2020-11-29 00:48

How do I set Java\'s min and max heap size through environment variables?

I know that the heap sizes can be set when launching java, but I would like to have this ad

相关标签:
7条回答
  • 2020-11-29 01:21

    Actually, there is a way to set global defaults for Sun's JVM via environment variables.

    See How to set a java system property so that it is effective whenever I start JVM without adding it to the command line arguments.

    0 讨论(0)
  • 2020-11-29 01:22

    You can't do it using environment variables. It's done via "non standard" options. Run: java -X for details. The options you're looking for are -Xmx and -Xms (this is "initial" heap size, so probably what you're looking for.)

    0 讨论(0)
  • 2020-11-29 01:22

    You can use JAVA_TOOL_OPTIONS.

    Example:

    export JAVA_TOOL_OPTIONS=-Xmx512m
    

    It has been mentioned in some comments, and in another answer.

    The OP's question is quite old, but as it is the first google result for the question, I thought i would add the answer here for clarity's sake.

    0 讨论(0)
  • 2020-11-29 01:37

    A couple of notes:

    1. Apache ant doesn't know anything about JAVA_OPTS, while Tomcat's startup scripts do. For Apache ant, use ANT_OPTS to affect the environment for the JVM that runs /ant/, but not for the things that ant might launch.

    2. The maximum heap size you can set depends entirely on the environment: for most 32-bit systems, the maximum amount of heap space you can request, regardless of available memory, is in the 2GiB range. The largest heap on a 64-bit system is "really big". Also, you are practically limited by physical memory as well, since the heap is managed by the JVM and you don't want a lot of swapping going on to the disk.

    3. For server environments, you typically want to set -Xms and -Xmx to the same value: this will fix the size of the heap at a certain size and the garbage collector has less work to do because the heap will never have to be re-sized.

    0 讨论(0)
  • 2020-11-29 01:47

    You can't do it using environment variables directly. You need to use the set of "non standard" options that are passed to the java command. Run: java -X for details. The options you're looking for are -Xmx and -Xms (this is "initial" heap size, so probably what you're looking for.)

    Some products like Ant or Tomcat might come with a batch script that looks for the JAVA_OPTS environment variable, but it's not part of the Java runtime. If you are using one of those products, you may be able to set the variable like:

    set JAVA_OPTS="-Xms128m -Xmx256m"  
    

    You can also take this approach with your own command line like:

    set JAVA_OPTS="-Xms128m -Xmx256m"  
    java ${JAVA_OPTS} MyClass
    
    0 讨论(0)
  • 2020-11-29 01:47

    If you want any java process, not just ant or Tomcat, to pick up options like -Xmx use the environment variable _JAVA_OPTIONS.

    In bash: export _JAVA_OPTIONS="-Xmx1g"

    0 讨论(0)
提交回复
热议问题