| <!DOCTYPE html> |
| |
| |
| |
| <html lang="en"> |
| <head> |
| <!-- Global site tag (gtag.js) - Google Analytics --> |
| <script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script> |
| <script> |
| window.dataLayer = window.dataLayer || []; |
| function gtag(){dataLayer.push(arguments);} |
| gtag('js', new Date()); |
| |
| gtag('config', 'UA-61232409-1'); |
| </script> |
| |
| |
| |
| <meta charset="UTF-8"> |
| <meta name="ignite-version" content="2.9.0" /> |
| <title>Eviction Policies | Ignite Documentation</title> |
| |
| <link rel="canonical" href="/docs/2.9.0/memory-configuration/eviction-policies" /> |
| |
| |
| <link rel="stylesheet" href="/assets/css/styles.css?1600286558"> |
| <link rel="stylesheet" href="/assets/css/asciidoc-pygments.css"> |
| <link rel="shortcut icon" href="/favicon.ico"> |
| <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'> |
| |
| <script type="text/javascript" src="/assets/js/anchor.min.js?1600286558"></script> |
| |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" /> |
| |
| |
| </head> |
| <body> |
| <header> |
| <!--#include virtual="/includes/promotion_banner.html" --> |
| <div class="container"> |
| <button type='button' class='menu' title='Docs menu'> |
| <img src="/assets/images/menu-icon.svg"/> |
| </button> |
| <div class='home'> |
| <a href="/" class='home' title='Apache Ignite home'> |
| <img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" > |
| </a> |
| </div> |
| |
| <nav> |
| |
| </nav> |
| |
| <select id="version-selector"> |
| <option value="2.9.0">2.9.0</option> |
| </select> |
| |
| <a href="https://github.com/apache/ignite" title='GitHub' class='github' target="_blank"> |
| <img src="/assets/images/github-gray.svg" alt="GitHub logo"> |
| </a> |
| |
| <form class='search'> |
| <button class="search-close" type='button'><img src='/assets/images/cancel.svg'></button> |
| <input type="search" placeholder="Search…" id="search-input"> |
| </form> |
| <button type='button' class='search-toggle'><img src='/assets/images/search.svg'></button> |
| <button type='button' class='top-nav-toggle'>⋮</button> |
| |
| |
| |
| </div> |
| </header> |
| |
| |
| <link rel="stylesheet" href="/assets/css/docs.css"> |
| <section class='page-docs'> |
| |
| |
| |
| |
| <nav class='left-nav' data-swiftype-index='false'> |
| |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/preface" class='' >Preface</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/java" |
| |
| class='' |
| >Java</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/dotnet" |
| |
| class='' |
| >.NET/C#</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/cpp" |
| |
| class='' |
| >C++</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/python" |
| |
| class='' |
| >Python</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/nodejs" |
| |
| class='' |
| >Node.JS</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/sql" |
| |
| class='' |
| >SQL</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/php" |
| |
| class='' |
| >PHP</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/quick-start/restapi" |
| |
| class='' |
| >REST API</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="/installation" class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/installation/installing-using-zip" |
| |
| class='' |
| >Installing Using ZIP Archive</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/installation/installing-using-docker" |
| |
| class='' |
| >Installing Using Docker</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/installation/deb-rpm" |
| |
| class='' |
| >Installing DEB or RPM package</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Kubernetes<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//installation/kubernetes/amazon-eks-deployment" class=''>Amazon EKS</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//installation/kubernetes/azure-deployment" class=''>Azure Kubernetes Service</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//installation/kubernetes/gke-deployment" class=''>Google Kubernetes Engine</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/setup" |
| |
| class='' |
| >Setting Up Ignite for Java</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/setup-dotnet" |
| |
| class='' |
| >Setting Up Ignite for .NET/C#</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/understanding-configuration" class='' >Understanding Configuration</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/logging" class='' >Configuring Logging</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/starting-nodes" class='' >Starting and Stopping Nodes</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/clustering" |
| |
| class='' |
| >Overview</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/tcp-ip-discovery" |
| |
| class='' |
| >TCP/IP Discovery</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/zookeeper-discovery" |
| |
| class='' |
| >ZooKeeper Discovery</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/discovery-in-the-cloud" |
| |
| class='' |
| >Discovery in the Cloud</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/network-configuration" |
| |
| class='' |
| >Network Configuration</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/connect-client-nodes" |
| |
| class='' |
| >Connecting Client Nodes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/clustering/running-client-nodes-behind-nat" |
| |
| class='' |
| >Running Client Nodes Behind NAT</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-modeling/data-modeling" |
| |
| class='' |
| >Introduction</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-modeling/data-partitioning" |
| |
| class='' |
| >Data Partitioning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-modeling/affinity-collocation" |
| |
| class='' |
| >Affinity Colocation</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle expanded '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group expanded'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/memory-architecture" |
| |
| class='' |
| >Memory Architecture</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/memory-configuration/data-regions" |
| |
| class='' |
| >Configuring Data Regions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/memory-configuration/eviction-policies" |
| |
| class='active' |
| >Eviction Policies</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/configuring-caches/configuration-overview" |
| |
| class='' |
| >Cache Configuration</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/configuring-caches/configuring-backups" |
| |
| class='' |
| >Configuring Partition Backups</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/configuring-caches/atomicity-modes" |
| |
| class='' |
| >Atomicity Modes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/configuring-caches/expiry-policies" |
| |
| class='' |
| >Expiry Policy</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/configuring-caches/on-heap-caching" |
| |
| class='' |
| >On-Heap Caching</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/configuring-caches/cache-groups" |
| |
| class='' |
| >Cache Groups</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/persistence/native-persistence" |
| |
| class='' |
| >Ignite Persistence</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/persistence/external-storage" |
| |
| class='' |
| >External Storage</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/persistence/swap" |
| |
| class='' |
| >Swapping</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/persistence/custom-cache-store" |
| |
| class='' |
| >Implementing Custom Cache Store</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/persistence/disk-compression" |
| |
| class='' |
| >Disk Compression</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/persistence/persistence-tuning" |
| |
| class='' |
| >Tuning Persistence</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/baseline-topology" class='' >Baseline Topology</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/cluster-states" class='' >Cluster States</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/data-rebalancing" class='' >Data Rebalancing</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/partition-loss-policy" class='' >Partition Loss Policy</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/deploying-user-code" class='' >Deploying User Code</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/peer-class-loading" class='' >Peer Class Loading</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/data-streaming" class='' >Data Streaming</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Using Key-Value Cache API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/key-value-api/basic-cache-operations" |
| |
| class='' |
| >Basic Cache Operations</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/key-value-api/binary-objects" |
| |
| class='' |
| >Working with Binary Objects</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/key-value-api/using-scan-queries" |
| |
| class='' |
| >Using Scan Queries</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/read-repair" |
| |
| class='' |
| >Read Repair</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/key-value-api/continuous-queries" class='' >Using Continuous Queries</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/key-value-api/transactions" class='' >Performing Transactions</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/sql-introduction" |
| |
| class='' |
| >Introduction</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/schemas" |
| |
| class='' |
| >Understanding Schemas</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/indexes" |
| |
| class='' |
| >Defining Indexes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/sql-api" |
| |
| class='' |
| >Using SQL API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/distributed-joins" |
| |
| class='' |
| >Distributed Joins</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/sql-transactions" |
| |
| class='' |
| >SQL Transactions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/custom-sql-func" |
| |
| class='' |
| >Custom SQL Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/JDBC/jdbc-driver" |
| |
| class='' |
| >JDBC Driver</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/JDBC/jdbc-client-driver" |
| |
| class='' |
| >JDBC Client Driver</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/transactions/mvcc" |
| |
| class='' |
| >Multiversion Concurrency Control</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/distributed-computing" |
| |
| class='' |
| >Distributed Computing API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/cluster-groups" |
| |
| class='' |
| >Cluster Groups</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/executor-service" |
| |
| class='' |
| >Executor Service</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/map-reduce" |
| |
| class='' |
| >MapReduce API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/load-balancing" |
| |
| class='' |
| >Load Balancing</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/fault-tolerance" |
| |
| class='' |
| >Fault Tolerance</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/distributed-computing/job-scheduling" |
| |
| class='' |
| >Job Scheduling</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/collocated-computations" class='' >Colocating Computations with Data</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/events/listening-to-events" |
| |
| class='' |
| >Enabling and Listenting to Events</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/events/events" |
| |
| class='' |
| >Events</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/near-cache" class='' >Near Caches</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/platform-cache" class='' >.NET Platform Cache</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/services/services" class='' >Services</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-structures/queue-and-set" |
| |
| class='' |
| >Queue and Set</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-structures/atomic-types" |
| |
| class='' |
| >Atomic Types</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-structures/countdownlatch" |
| |
| class='' |
| >CountDownLatch</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-structures/atomic-sequence" |
| |
| class='' |
| >Atomic Sequence</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/data-structures/semaphore" |
| |
| class='' |
| >Semaphore</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/machine-learning/machine-learning" |
| |
| class='' |
| >Machine Learning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/machine-learning/partition-based-dataset" |
| |
| class='' |
| >Partition Based Dataset</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/machine-learning/updating-trained-models" |
| |
| class='' |
| >Updating Trained Models</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Binary Classification<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/linear-svm" class=''>Linear SVM (Support Vector Machine)</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/decision-trees" class=''>Decision Trees</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/multilayer-perceptron" class=''>Multilayer Perceptron</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/logistic-regression" class=''>Logistic Regression</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/knn-classification" class=''>k-NN Classification</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/ann" class=''>ANN (Approximate Nearest Neighbor)</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/binary-classification/naive-bayes" class=''>Naive Bayes</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Regression<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/regression/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/regression/linear-regression" class=''>Linear Regression</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/regression/decision-trees-regression" class=''>Decision Trees Regression</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/regression/knn-regression" class=''>k-NN Regression</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/clustering/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/clustering/k-means-clustering" class=''>K-Means Clustering</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/clustering/gaussian-mixture" class=''>Gaussian mixture (GMM)</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/machine-learning/preprocessing" |
| |
| class='' |
| >Preprocessing</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Model Selection<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/model-selection/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/model-selection/evaluator" class=''>Evaluator</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/model-selection/split-the-dataset-on-test-and-train-datasets" class=''>Split the dataset on test and train datasets</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/model-selection/hyper-parameter-tuning" class=''>Hyper-parameter tuning</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/model-selection/pipeline-api" class=''>Pipeline API</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/machine-learning/multiclass-classification" |
| |
| class='' |
| >Multiclass Classification</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Ensemble Methods<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/ensemble-methods/introduction" class=''></a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/ensemble-methods/stacking" class=''>Stacking</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/ensemble-methods/baggin" class=''>Bagging</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/ensemble-methods/random-forest" class=''>Random Forest</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/ensemble-methods/gradient-boosting" class=''>Gradient Boosting</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/machine-learning/recommendation-systems" |
| |
| class='' |
| >Recommendation Systems</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Importing Model<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/importing-model/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/importing-model/model-import-from-gxboost" class=''>Import Model from XGBoost</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//machine-learning/importing-model/model-import-from-apache-spark" class=''>Import Model from Apache Spark</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/monitoring-metrics/intro" |
| |
| class='' |
| >Introduction</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/monitoring-metrics/cluster-id" |
| |
| class='' |
| >Cluster ID and Tag</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//monitoring-metrics/configuring-metrics" class=''>Configuring Metrics</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//monitoring-metrics/metrics" class=''>JMX Metrics</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>New Metrics System<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//monitoring-metrics/new-metrics-system" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//monitoring-metrics/new-metrics" class=''>Metrics</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/monitoring-metrics/system-views" |
| |
| class='' |
| >System Views</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/monitoring-metrics/tracing" |
| |
| class='' |
| >Tracing</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="/security" class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/security/authentication" |
| |
| class='' |
| >Authentication</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/security/ssl-tls" |
| |
| class='' |
| >SSL/TLS</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Transparent Data Encryption<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//security/tde" class=''>Introduction</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//security/master-key-rotation" class=''>Master key rotation</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/getting-started-with-thin-clients" |
| |
| class='' |
| >Thin Clients Overview</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/java-thin-client" |
| |
| class='' |
| >Java Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/dotnet-thin-client" |
| |
| class='' |
| >.NET Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/cpp-thin-client" |
| |
| class='' |
| >C++ Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/python-thin-client" |
| |
| class='' |
| >Python Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/php-thin-client" |
| |
| class='' |
| >PHP Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/thin-clients/nodejs-thin-client" |
| |
| class='' |
| >Node.js Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Binary Client Protocol<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| <li><a href="/docs/2.9.0//binary-client-protocol/binary-client-protocol" class=''>Binary Client Protocol</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//binary-client-protocol/data-format" class=''>Data Format</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//binary-client-protocol/key-value-queries" class=''>Key-Value Queries</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//binary-client-protocol/sql-and-scan-queries" class=''>SQL and Scan Queries</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//binary-client-protocol/binary-type-metadata" class=''>Binary Types Metadata</a></li> |
| |
| |
| |
| <li><a href="/docs/2.9.0//binary-client-protocol/cache-configuration" class=''>Cache Configuration</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/ODBC/odbc-driver" |
| |
| class='' |
| >ODBC Driver</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/ODBC/connection-string-dsn" |
| |
| class='' |
| >Connection String and DSN</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/ODBC/querying-modifying-data" |
| |
| class='' |
| >Querying and Modifying Data</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/ODBC/specification" |
| |
| class='' |
| >Specification</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/ODBC/data-types" |
| |
| class='' |
| >Data Types</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/SQL/ODBC/error-codes" |
| |
| class='' |
| >Error Codes</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/restapi" class='' >REST API</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/control-script" class='' >Control Script</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/plugins" class='' >Plugins</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/2.9.0/sqlline" class='' >SQLLine</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="" class='group-toggle collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/ignite-for-spark/overview" |
| |
| class='' |
| >Overview</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/ignite-for-spark/ignitecontext-and-rdd" |
| |
| class='' |
| >IgniteContext and IgniteRDD</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/ignite-for-spark/ignite-dataframe" |
| |
| class='' |
| >Ignite DataFrame</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/ignite-for-spark/installation" |
| |
| class='' |
| >Installation</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/ignite-for-spark/spark-shell" |
| |
| class='' |
| >Test Ignite with Spark-shell</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/ignite-for-spark/troubleshooting" |
| |
| class='' |
| >Troubleshooting</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' data-guide-url="/sql-reference/sql-reference-overview" class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/sql-conformance" |
| |
| class='' |
| >SQL Conformance</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/ddl" |
| |
| class='' |
| >Data Definition Language (DDL)</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/dml" |
| |
| class='' |
| >Data Manipulation Language (DML)</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/transactions" |
| |
| class='' |
| >Transactions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/operational-commands" |
| |
| class='' |
| >Operational Commands</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/aggregate-functions" |
| |
| class='' |
| >Aggregate functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/numeric-functions" |
| |
| class='' |
| >Numeric Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/string-functions" |
| |
| class='' |
| >String Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/date-time-functions" |
| |
| class='' |
| >Data and Time Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/system-functions" |
| |
| class='' |
| >System Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/2.9.0/sql-reference/data-types" |
| |
| class='' |
| >Data Types</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| </nav> |
| <div class="left-nav__overlay"></div> |
| |
| |
| <article data-swiftype-index='true'> |
| <a class='edit-link' href="https://github.com/apache/ignite/tree/IGNITE-7595/docs/_docs/memory-configuration/eviction-policies.adoc" target="_blank">Edit</a> |
| |
| <h1>Eviction Policies</h1> |
| |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>When <a href="/docs/2.9.0/persistence/native-persistence">Native Persistence</a> is off, Ignite holds all cache entries in the off-heap memory and allocates pages as new data comes in. |
| When a memory limit is reached and Ignite cannot allocate a page, some of the data must be purged from memory to avoid OutOfMemory errors. |
| This process is called <em>eviction</em>. Eviction prevents the system from running out of memory but at the cost of losing data and having to reload it when you need it again.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Eviction is used in following cases:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>for off-heap memory when <a href="/docs/2.9.0/persistence/native-persistence">Native Persistence</a> is off;</p> |
| </li> |
| <li> |
| <p>for off-heap memory when Ignite is used with an <a href="/docs/2.9.0/persistence/external-storage">external storage</a>;</p> |
| </li> |
| <li> |
| <p>for <a href="/docs/2.9.0/configuring-caches/on-heap-caching">on-heap caches</a>;</p> |
| </li> |
| <li> |
| <p>for <a href="/docs/2.9.0/near-cache">near caches</a> if configured.</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>When Native Persistence is on, a similar process — called <em>page replacement</em> — is used to free up off-heap memory when Ignite cannot allocate a new page. |
| The difference is that the data is not lost (because it is stored in the persistent storage), and therefore you are less concerned about losing data than about efficiency. |
| Page replacement is automatically handled by Ignite and is not user-configurable.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="off-heap-memory-eviction">Off-Heap Memory Eviction</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Off-heap memory eviction is implemented as follows.</p> |
| </div> |
| <div class="paragraph"> |
| <p>When memory usage exceeds the preset limit, Ignite applies one of the preconfigured algorithms to select a memory page that is most suitable for eviction. |
| Then, each cache entry contained in the page is removed from the page. |
| However, if an entry is locked by a transaction, it is retained. |
| Thus, either the entire page or a large chunk of it is emptied and is ready to be reused.</p> |
| </div> |
| <div class="imageblock"> |
| <div class="content"> |
| <img src="/docs/2.9.0/images/off_heap_memory_eviction.png" alt="Off-Heap Memory Eviction Mechanism"> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>By default, off-heap memory eviction is disabled, which means that the used memory constantly grows until it reaches its limit. |
| To enable eviction, specify the page eviction mode in the <a href="/docs/2.9.0/memory-configuration/data-regions/">data region configuration</a>. |
| Note that off-heap memory eviction is configured per <a href="/docs/2.9.0/memory-configuration/data-regions">data region</a>. |
| If you don’t use data regions, you have to explicitly add default data region parameters in your configuration to be able to configure eviction.</p> |
| </div> |
| <div class="paragraph"> |
| <p>By default, eviction starts when the overall RAM consumption by a region gets to 90%. |
| Use the <code>DataRegionConfiguration.setEvictionThreshold(…​)</code> parameter if you need to initiate eviction earlier or later.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Ignite supports two page selection algorithms:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Random-LRU</p> |
| </li> |
| <li> |
| <p>Random-2-LRU</p> |
| </li> |
| </ul> |
| </div> |
| <div class="paragraph"> |
| <p>The differences between the two are explained below.</p> |
| </div> |
| <div class="sect2"> |
| <h3 id="random-lru">Random-LRU</h3> |
| <div class="paragraph"> |
| <p>To enable the Random-LRU eviction algorithm, configure the data region as shown below:</p> |
| </div> |
| <code-tabs><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.IgniteConfiguration"</span><span class="nt">></span> |
| <span class="c"><!-- Memory configuration. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"dataStorageConfiguration"</span><span class="nt">></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.DataStorageConfiguration"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"dataRegionConfigurations"</span><span class="nt">></span> |
| <span class="nt"><list></span> |
| <span class="c"><!-- Defining a data region that will consume up to 20 GB of RAM. --></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.DataRegionConfiguration"</span><span class="nt">></span> |
| <span class="c"><!-- Custom region name. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"20GB_Region"</span><span class="nt">/></span> |
| <span class="c"><!-- 500 MB initial size (RAM). --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"initialSize"</span> <span class="na">value=</span><span class="s">"#{500L * 1024 * 1024}"</span><span class="nt">/></span> |
| <span class="c"><!-- 20 GB maximum size (RAM). --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"maxSize"</span> <span class="na">value=</span><span class="s">"#{20L * 1024 * 1024 * 1024}"</span><span class="nt">/></span> |
| <span class="c"><!-- Enabling RANDOM_LRU eviction for this region. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"pageEvictionMode"</span> <span class="na">value=</span><span class="s">"RANDOM_LRU"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></list></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.IgniteConfiguration"</span><span class="nt">></span> |
| <span class="c"><!-- Memory configuration. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"dataStorageConfiguration"</span><span class="nt">></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.DataStorageConfiguration"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"dataRegionConfigurations"</span><span class="nt">></span> |
| <span class="nt"><list></span> |
| <span class="c"><!-- |
| Defining a data region that consumes up to 20 GB of RAM. |
| --></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.DataRegionConfiguration"</span><span class="nt">></span> |
| <span class="c"><!-- Custom region name. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"20GB_Region"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- 500 MB initial size (RAM). --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"initialSize"</span> <span class="na">value=</span><span class="s">"#{500L * 1024 * 1024}"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- 20 GB maximum size (RAM). --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"maxSize"</span> <span class="na">value=</span><span class="s">"#{20L * 1024 * 1024 * 1024}"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- Enabling RANDOM_LRU eviction for this region. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"pageEvictionMode"</span> <span class="na">value=</span><span class="s">"RANDOM_LRU"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></list></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></property></span> |
| |
| <span class="c"><!-- The rest of the configuration. --></span> |
| <span class="nt"></bean></span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="c1">// Node configuration.</span> |
| <span class="nc">IgniteConfiguration</span> <span class="n">cfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">IgniteConfiguration</span><span class="o">();</span> |
| |
| <span class="c1">// Memory configuration.</span> |
| <span class="nc">DataStorageConfiguration</span> <span class="n">storageCfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">DataStorageConfiguration</span><span class="o">();</span> |
| |
| <span class="c1">// Creating a new data region.</span> |
| <span class="nc">DataRegionConfiguration</span> <span class="n">regionCfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">DataRegionConfiguration</span><span class="o">();</span> |
| |
| <span class="c1">// Region name.</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setName</span><span class="o">(</span><span class="s">"20GB_Region"</span><span class="o">);</span> |
| |
| <span class="c1">// 500 MB initial size (RAM).</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setInitialSize</span><span class="o">(</span><span class="mi">500L</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="o">);</span> |
| |
| <span class="c1">// 20 GB max size (RAM).</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setMaxSize</span><span class="o">(</span><span class="mi">20L</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="o">);</span> |
| |
| <span class="c1">// Enabling RANDOM_LRU eviction for this region.</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setPageEvictionMode</span><span class="o">(</span><span class="nc">DataPageEvictionMode</span><span class="o">.</span><span class="na">RANDOM_LRU</span><span class="o">);</span> |
| |
| <span class="c1">// Setting the data region configuration.</span> |
| <span class="n">storageCfg</span><span class="o">.</span><span class="na">setDataRegionConfigurations</span><span class="o">(</span><span class="n">regionCfg</span><span class="o">);</span> |
| |
| <span class="c1">// Applying the new configuration.</span> |
| <span class="n">cfg</span><span class="o">.</span><span class="na">setDataStorageConfiguration</span><span class="o">(</span><span class="n">storageCfg</span><span class="o">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="kt">var</span> <span class="n">cfg</span> <span class="p">=</span> <span class="k">new</span> <span class="n">IgniteConfiguration</span> |
| <span class="p">{</span> |
| <span class="n">DataStorageConfiguration</span> <span class="p">=</span> <span class="k">new</span> <span class="n">DataStorageConfiguration</span> |
| <span class="p">{</span> |
| <span class="n">DataRegionConfigurations</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]</span> |
| <span class="p">{</span> |
| <span class="k">new</span> <span class="n">DataRegionConfiguration</span> |
| <span class="p">{</span> |
| <span class="n">Name</span> <span class="p">=</span> <span class="s">"20GB_Region"</span><span class="p">,</span> |
| <span class="n">InitialSize</span> <span class="p">=</span> <span class="m">500L</span> <span class="p">*</span> <span class="m">1024</span> <span class="p">*</span> <span class="m">1024</span><span class="p">,</span> |
| <span class="n">MaxSize</span> <span class="p">=</span> <span class="m">20L</span> <span class="p">*</span> <span class="m">1024</span> <span class="p">*</span> <span class="m">1024</span> <span class="p">*</span> <span class="m">1024</span><span class="p">,</span> |
| <span class="n">PageEvictionMode</span> <span class="p">=</span> <span class="n">DataPageEvictionMode</span><span class="p">.</span><span class="n">RandomLru</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| <span class="p">};</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++' data-unavailable='true'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code>This API is not presently available for C++. You can use XML configuration.</code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="paragraph"> |
| <p>Random-LRU algorithm works as follows:</p> |
| </div> |
| <div class="ulist"> |
| <ul> |
| <li> |
| <p>Once a memory region defined by a memory policy is configured, an off-heap array is allocated to track the 'last usage' timestamp for every individual data page.</p> |
| </li> |
| <li> |
| <p>When a data page is accessed, its timestamp gets updated in the tracking array.</p> |
| </li> |
| <li> |
| <p>When it is time to evict a page, the algorithm randomly chooses 5 indexes from the tracking array and evicts the page with the oldest timestamp. If some of the indexes point to non-data pages (index or system pages), then the algorithm picks another page.</p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="random-2-lru">Random-2-LRU</h3> |
| <div class="paragraph"> |
| <p>To enable Random-2-LRU eviction algorithm, which is a scan-resistant version of Random-LRU, configure the data region, as shown in the example below:</p> |
| </div> |
| <code-tabs><code-tab data-tab='XML'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="xml"><span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.IgniteConfiguration"</span><span class="nt">></span> |
| <span class="c"><!-- Memory configuration. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"dataStorageConfiguration"</span><span class="nt">></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.DataStorageConfiguration"</span><span class="nt">></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"dataRegionConfigurations"</span><span class="nt">></span> |
| <span class="nt"><list></span> |
| <span class="c"><!-- |
| Defining a data region that consumes up to 20 GB of RAM. |
| --></span> |
| <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.DataRegionConfiguration"</span><span class="nt">></span> |
| <span class="c"><!-- Custom region name. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"20GB_Region"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- 500 MB initial size (RAM). --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"initialSize"</span> <span class="na">value=</span><span class="s">"#{500L * 1024 * 1024}"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- 20 GB maximum size (RAM). --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"maxSize"</span> <span class="na">value=</span><span class="s">"#{20L * 1024 * 1024 * 1024}"</span><span class="nt">/></span> |
| |
| <span class="c"><!-- Enabling RANDOM_2_LRU eviction for this region. --></span> |
| <span class="nt"><property</span> <span class="na">name=</span><span class="s">"pageEvictionMode"</span> <span class="na">value=</span><span class="s">"RANDOM_2_LRU"</span><span class="nt">/></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></list></span> |
| <span class="nt"></property></span> |
| <span class="nt"></bean></span> |
| <span class="nt"></property></span> |
| |
| <span class="c"><!-- The rest of the configuration. --></span> |
| <span class="nt"></bean></span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="c1">// Ignite configuration.</span> |
| <span class="nc">IgniteConfiguration</span> <span class="n">cfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">IgniteConfiguration</span><span class="o">();</span> |
| |
| <span class="c1">// Memory configuration.</span> |
| <span class="nc">DataStorageConfiguration</span> <span class="n">storageCfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">DataStorageConfiguration</span><span class="o">();</span> |
| |
| <span class="c1">// Creating a new data region.</span> |
| <span class="nc">DataRegionConfiguration</span> <span class="n">regionCfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">DataRegionConfiguration</span><span class="o">();</span> |
| |
| <span class="c1">// Region name.</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setName</span><span class="o">(</span><span class="s">"20GB_Region"</span><span class="o">);</span> |
| |
| <span class="c1">// 500 MB initial size (RAM).</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setInitialSize</span><span class="o">(</span><span class="mi">500L</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="o">);</span> |
| |
| <span class="c1">// 20 GB max size (RAM).</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setMaxSize</span><span class="o">(</span><span class="mi">20L</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="o">);</span> |
| |
| <span class="c1">// Enabling RANDOM_2_LRU eviction for this region.</span> |
| <span class="n">regionCfg</span><span class="o">.</span><span class="na">setPageEvictionMode</span><span class="o">(</span><span class="nc">DataPageEvictionMode</span><span class="o">.</span><span class="na">RANDOM_2_LRU</span><span class="o">);</span> |
| |
| <span class="c1">// Setting the data region configuration.</span> |
| <span class="n">storageCfg</span><span class="o">.</span><span class="na">setDataRegionConfigurations</span><span class="o">(</span><span class="n">regionCfg</span><span class="o">);</span> |
| |
| <span class="c1">// Applying the new configuration.</span> |
| <span class="n">cfg</span><span class="o">.</span><span class="na">setDataStorageConfiguration</span><span class="o">(</span><span class="n">storageCfg</span><span class="o">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="kt">var</span> <span class="n">cfg</span> <span class="p">=</span> <span class="k">new</span> <span class="n">IgniteConfiguration</span> |
| <span class="p">{</span> |
| <span class="n">DataStorageConfiguration</span> <span class="p">=</span> <span class="k">new</span> <span class="n">DataStorageConfiguration</span> |
| <span class="p">{</span> |
| <span class="n">DataRegionConfigurations</span> <span class="p">=</span> <span class="k">new</span><span class="p">[]</span> |
| <span class="p">{</span> |
| <span class="k">new</span> <span class="n">DataRegionConfiguration</span> |
| <span class="p">{</span> |
| <span class="n">Name</span> <span class="p">=</span> <span class="s">"20GB_Region"</span><span class="p">,</span> |
| <span class="n">InitialSize</span> <span class="p">=</span> <span class="m">500L</span> <span class="p">*</span> <span class="m">1024</span> <span class="p">*</span> <span class="m">1024</span><span class="p">,</span> |
| <span class="n">MaxSize</span> <span class="p">=</span> <span class="m">20L</span> <span class="p">*</span> <span class="m">1024</span> <span class="p">*</span> <span class="m">1024</span> <span class="p">*</span> <span class="m">1024</span><span class="p">,</span> |
| <span class="n">PageEvictionMode</span> <span class="p">=</span> <span class="n">DataPageEvictionMode</span><span class="p">.</span><span class="n">Random2Lru</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| <span class="p">};</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++' data-unavailable='true'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code>This API is not presently available for C++. You can use XML configuration.</code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="paragraph"> |
| <p>In Random-2-LRU, the two most recent access timestamps are stored for every data page. At the time of eviction, the algorithm randomly chooses 5 indexes from the tracking array and the minimum between two latest timestamps is taken for further comparison with corresponding minimums of four other pages that are chosen as eviction candidates.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Random-LRU-2 outperforms LRU by resolving the "one-hit wonder" problem: if a data page is accessed rarely but accidentally accessed once, it’s protected from eviction for a long time.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="on-heap-cache-eviction">On-Heap Cache Eviction</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Refer to the <a href="/docs/2.9.0/configuring-caches/on-heap-caching#configuring-eviction-policy">Configuring Eviction Policy for On-Heap Caches</a> section for the instruction on how to configure eviction policy for on-heap caches.</p> |
| </div> |
| </div> |
| </div> |
| <div class="copyright"> |
| © 2020 The Apache Software Foundation.<br/> |
| Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation. |
| |
| </div> |
| |
| </article> |
| <nav class="right-nav" data-swiftype-index='false'> |
| <ul class="sectlevel1"> |
| <li><a href="#off-heap-memory-eviction">Off-Heap Memory Eviction</a> |
| <ul class="sectlevel2"> |
| <li><a href="#random-lru">Random-LRU</a></li> |
| <li><a href="#random-2-lru">Random-2-LRU</a></li> |
| </ul> |
| </li> |
| <li><a href="#on-heap-cache-eviction">On-Heap Cache Eviction</a></li> |
| </ul> |
| |
| |
| <footer> |
| </footer> |
| |
| </nav> |
| |
| </section> |
| <script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script> |
| |
| <script> |
| // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late |
| anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5'); |
| anchors.options = { |
| placement: 'right', |
| visible: 'always' |
| }; |
| </script> |
| <!-- load google fonts async --> |
| <script type="text/javascript"> |
| WebFontConfig = { |
| google: { families: [ 'Open+Sans:300,400,600,700&display=swap' ] } |
| }; |
| (function() { |
| var wf = document.createElement('script'); |
| wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js'; |
| wf.type = 'text/javascript'; |
| wf.async = 'true'; |
| var s = document.getElementsByTagName('script')[0]; |
| s.parentNode.insertBefore(wf, s); |
| })(); </script> |
| <script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script> |
| <script> |
| docsearch({ |
| // Your apiKey and indexName will be given to you once |
| // we create your config |
| apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8', |
| indexName: 'apache_ignite', |
| // Replace inputSelector with a CSS selector |
| // matching your search input |
| inputSelector: '#search-input', |
| // algoliaOptions: { 'facetFilters': ["version:$VERSION"] }, |
| |
| // Set debug to true to inspect the dropdown |
| debug: false, |
| }); |
| </script> |
| <script type='module' src='/assets/js/index.js?1600286558' async crossorigin></script> |
| <script type='module' src='/assets/js/versioning.js?1600286558' async crossorigin></script> |
| </body> |
| |
| </html> |