The base package of the GemFire Java product, featuring highly concurrent distributed {@linkplain org.apache.geode.cache.Cache caching} with {@linkplain org.apache.geode.cache.CacheEvent cache event} delivery, OQL querying, and remote cache administration, built using a {@linkplain org.apache.geode.distributed.DistributedSystem} which includes a {@linkplain org.apache.geode.distributed.DistributedLockService}.

This package contains classes that are used throughout GemFire, providing enhanced serialization performance using the {@link org.apache.geode.DataSerializable} feature and the ability to profile your GemFire application using a handy {@link org.apache.geode.Statistics} infrastructure.

## GemFire Statistics

The ability to monitor and analyze the behavior and performance of an application can ease the job of optimization. To aid in this analysis, GemFire provides the ability to register and capture application statistics. An application statistic is simply a number that the application is free to modify and that is monitored by the GemFire's statistics collector. The statistics may be monitored at runtime using the Admin API or GemFire JMX Agent.

Each application statistic is described by a {@link org.apache.geode.StatisticDescriptor} instance. Logical groupings of application statistics are described by a {@link org.apache.geode.StatisticsType} instance that contains the name and description of each statistic. Each instance of an type is represented by an instance of {@link org.apache.geode.Statistics}. The {@link org.apache.geode.StatisticDescriptor descriptors}, {@link org.apache.geode.StatisticsType types}, and {@link org.apache.geode.Statistics instances} are created using an instance of the {@link org.apache.geode.StatisticsFactory} interface. Each statistics instance (there may be multiple instances of a statistics type) can be identified by a {@link org.apache.geode.Statistics#getTextId text id} and/or a {@link org.apache.geode.Statistics#getNumericId numeric id}. The name, description, etc. of the statistic and its type are available in the Admin API or GemFire JMX Agent.

An application can get, set, and increment the value of a statistic using methods of the `Statistics` interface. If statistics sampling has been enabled a thread in the application VM periodically reads the values of application statistics allowing them to be viewed by the Admin API and GemFire JMX Agent. Statistics may also be archived to a file, the name and location of which may be configured when creating a {@link org.apache.geode.distributed.DistributedSystem}.

In addition to application statistics, GemFire maintains statistics about the distributed system, the distributed cache, and the physical machine on which it runs. These statistics can be monitored, viewed, and archived just like application statistics.