<?xml version="1.0"?>
<!--

 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.

-->

<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Runtime-Flow-To-Disk">
  <title>Flow to Disk</title>
  <para>Flow to disk limits the amount of <link linkend="Java-Broker-Runtime-Memory">direct and heap memory</link>
    that can be occupied by messages. Once this
    limit is reached any new transient messages and all existing transient messages will be
    transferred to disk. Newly arriving transient messages will continue to go to the disk until the
    cumulative size of all messages falls below the limit once again.</para>
  <para>By default the Broker makes 75% of the max direct available memory for messages. This memory is
    divided between all the queues across all virtual hosts defined on the Broker with a percentage
    calculated according to their current queue size. These calculations are refreshed periodically
    by the housekeeping cycle.</para>
  <para>For example if there are two queues, one containing 75MB and the second 100MB messages
    respectively and the Broker has 1GB direct memory with the default of 75% available for messages.
    The first queue will have a target size of 320MB and the second 430MB. Once 750MB is taken by
    messages, messages will begin to flow to disk. New messages will cease to flow to disk when
    their cumulative size falls beneath 750MB.</para>
  <para>Flow to disk is configured by Broker context variable
      <literal>broker.flowToDiskThreshold</literal>. It is expressed as a size in bytes and defaults
    to 75% of the JVM maximum heap size.</para>
</section>
