<!DOCTYPE html>
<!--
 -
 - Licensed to the Apache Software Foundation (ASF) under one
 - or more contributor license agreements.  See the NOTICE file
 - distributed with this work for additional information
 - regarding copyright ownership.  The ASF licenses this file
 - to you under the Apache License, Version 2.0 (the
 - "License"); you may not use this file except in compliance
 - with the License.  You may obtain a copy of the License at
 -
 -   http://www.apache.org/licenses/LICENSE-2.0
 -
 - Unless required by applicable law or agreed to in writing,
 - software distributed under the License is distributed on an
 - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 - KIND, either express or implied.  See the License for the
 - specific language governing permissions and limitations
 - under the License.
 -
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Appendix A. Environment Variables - Apache Qpid&#8482;</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
    <script type="text/javascript">var _deferredFunctions = [];</script>
    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
    <!--[if lte IE 8]>
      <link rel="stylesheet" href="/ie.css" type="text/css"/>
      <script type="text/javascript" src="/html5shiv.js"></script>
    <![endif]-->

    <!-- Redirects for `go get` and godoc.org -->
    <meta name="go-import"
          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
    <meta name="go-source"
          content="qpid.apache.org
https://github.com/apache/qpid-proton/blob/go1/README.md
https://github.com/apache/qpid-proton/tree/go1{/dir}
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
  </head>
  <body>
    <div id="-content">
      <div id="-top" class="panel">
        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>

        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>

        <ul id="-global-navigation">
          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
          <li><a href="/documentation.html">Documentation</a></li>
          <li><a href="/download.html">Download</a></li>
          <li><a href="/discussion.html">Discussion</a></li>
        </ul>
      </div>

      <div id="-menu" class="panel" style="display: none;">
        <div class="flex">
          <section>
            <h3>Project</h3>

            <ul>
              <li><a href="/overview.html">Overview</a></li>
              <li><a href="/components/index.html">Components</a></li>
              <li><a href="/releases/index.html">Releases</a></li>
            </ul>
          </section>

          <section>
            <h3>Messaging APIs</h3>

            <ul>
              <li><a href="/proton/index.html">Qpid Proton</a></li>
              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
            </ul>
          </section>

          <section>
            <h3>Servers and tools</h3>

            <ul>
              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
            </ul>
          </section>

          <section>
            <h3>Resources</h3>

            <ul>
              <li><a href="/dashboard.html">Dashboard</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
              <li><a href="/resources.html">More resources</a></li>
            </ul>
          </section>
        </div>
      </div>

      <div id="-search" class="panel" style="display: none;">
        <form action="http://www.google.com/search" method="get">
          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
          <button type="submit">Search</button>
          <a href="/search.html">More ways to search</a>
        </form>
      </div>

      <div id="-middle" class="panel">
        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.2.0/index.html">Qpid Broker-J 9.2.0</a></li><li><a href="/releases/qpid-broker-j-9.2.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix A. Environment Variables</li></ul>

        <div id="-middle-content">
          <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. Environment Variables</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery-Virtualhost.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-System-Properties.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="Java-Broker-Appendix-Environment-Variables"></a>Appendix A. Environment Variables</h1></div></div></div><p>The following table describes the environment variables understood by the Qpid scripts
    contained within the <code class="literal">/bin</code> directory within the Broker distribution.</p><p>To take effect, these variables must be set within the shell (and exported - if using Unix)
    before invoking the script.</p><div class="table"><a id="d0e10490"></a><p class="title"><strong>Table A.1. Environment variables</strong></p><div class="table-contents"><table summary="Environment variables" width="100%" border="1"><colgroup><col class="envvar" /><col class="default" /><col class="purpose" /></colgroup><thead><tr><th>Environment variable</th><th>Default</th><th>Purpose</th></tr></thead><tbody><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Home"></a>QPID_HOME</td><td>
            <p>None</p>
          </td><td>
            <p>The variable used to tell the Broker its installation directory. It must be an
              absolute path. This is used to determine the location of Qpid's dependency JARs and
              some configuration files.</p>
            <p>Typically the value of this variable will look similar to
                <code class="literal">c:\qpid\qpid-broker\\9.2.0</code> (Windows) or
                <code class="literal">/usr/local/qpid/qpid-broker/9.2.0</code> (Unix). The
              installation prefix will differ from installation to installation. </p>
            <p>If not set, a value for <code class="literal">QPID_HOME</code> is derived from the location
              of the script itself.</p>
          </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Work"></a>QPID_WORK</td><td>
            <p>User's home directory</p>
          </td><td>
            <p>Used as the default root directory for any data written by the Broker. This is the
              default location for any message data written to persistent stores and the Broker's
              log file.</p>
            <p>For example, <code class="literal">QPID_WORK=/var/qpidwork</code>.</p>
          </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"></a>QPID_OPTS</td><td>
            <p>None</p>
          </td><td>
            <p>This is the preferred mechanism for passing <a class="link" href="Java-Broker-Appendix-System-Properties.html" title="Appendix B. System Properties">Java system properties</a> to the
              Broker. The value must be a list of system properties each separate by a space.
                  <code class="literal">-D<em class="replaceable"><code>name1</code></em>=<em class="replaceable"><code>value1</code></em>
                  -D<em class="replaceable"><code>name2</code></em>=<em class="replaceable"><code>value2</code></em></code>.
            </p>
          </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Gc"></a>QPID_JAVA_GC</td><td>
            <code class="literal">-XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC</code>
          </td><td>
            <p>This is the preferred mechanism for customising garbage collection behaviour. The
              value should contain valid garbage collection options(s) for the target JVM.</p>
            <p>Refer to the JVM's documentation for details.</p>
          </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem"></a>QPID_JAVA_MEM</td><td>
            <code class="literal">-Xmx512m -XX:MaxDirectMemorySize=1536m</code>
          </td><td>
            <p>This is the preferred mechanism for customising the size of the JVM's heap and
              direct memory.
              The value should contain valid memory option(s) for the target JVM. Oracle JVMs
              understand <code class="literal">-Xmx</code> to specify a maximum heap size,
               <code class="literal">-Xms</code> an initial size, and
               <code class="literal">-XX:MaxDirectMemorySize</code> for the maximum amount of direct
               memory.</p>
            <p>For example, <code class="code">QPID_JAVA_MEM="-Xmx6g -XX:MaxDirectMemorySize=12g"</code> would
              set a maximum heap size of 6GB and 12GB of direct memory.</p>
            <p>Refer to the JVM's documentation for details.</p>
          </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Java-Opts"></a>JAVA_OPTS</td><td>None</td><td>
            <p>This is the preferred mechanism for passing any other JVM options. This variable is
              commonly used to pass options for diagnostic purposes, for instance to turn on verbose
              GC. <code class="literal">-verbose:gc</code>.</p>
            <p>Refer to the JVM's documentation for details.</p>
          </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery-Virtualhost.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-System-Properties.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">11.3. Virtualhost </td><td width="20%" align="center"><a accesskey="h" href="Apache-Qpid-Broker-J-Book.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix B. System Properties</td></tr></table></div></div>

          <hr/>

          <ul id="-apache-navigation">
            <li><a href="http://www.apache.org/">Apache</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
            <li><a href="/security.html">Security</a></li>
            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
          </ul>

          <p id="-legal">
            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
            The Apache Software Foundation; Licensed under
            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
            Proton, Apache, the Apache feather logo, and the Apache Qpid
            project logo are trademarks of The Apache Software
            Foundation; All other marks mentioned may be trademarks or
            registered trademarks of their respective owners
          </p>
        </div>
      </div>
    </div>
  </body>
</html>
