/* * 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. */ package org.apache.geode.cache30; import org.apache.geode.cache.*; import org.apache.geode.distributed.DistributedSystem; import org.apache.geode.LogWriter; import org.apache.geode.internal.logging.LogWriterImpl; import org.apache.geode.internal.logging.LoggingThreadGroup; /** * Tests populating a region with data that is ever-increasing in size. It is used for testing the * "Heap LRU" feature that helps prevent out of memory errors. */ public class TestHeapLRU { public static void main(String[] args) throws Exception { DistributedSystem system = DistributedSystem.connect(new java.util.Properties()); Cache cache = CacheFactory.create(system); AttributesFactory factory = new AttributesFactory(); factory.setEvictionAttributes( EvictionAttributes.createLRUHeapAttributes(null, EvictionAction.OVERFLOW_TO_DISK)); factory.setDiskSynchronous(true); factory.setDiskStoreName(cache.createDiskStoreFactory() .setDiskDirs(new java.io.File[] {new java.io.File(System.getProperty("user.dir"))}) .create("TestHeapLRU").getName()); Region region = cache.createRegion("TestDiskRegion", factory.create()); ThreadGroup tg = LoggingThreadGroup.createThreadGroup("Annoying threads"); Thread thread = new Thread(tg, "Annoying thread") { public void run() { try { while (true) { System.out.println("Annoy..."); Object[] array = new Object[10 /* * 1024 */]; for (int i = 0; i < array.length; i++) { array[i] = new byte[1024]; Thread.sleep(10); } System.out.println("SYSTEM GC"); System.gc(); Thread.sleep(1000); } } catch (InterruptedException ex) { System.err.println("Interrupted"); // FIXME should throw } } }; thread.setDaemon(true); // thread.start(); // ArrayList list = new ArrayList(); for (int i = 0; i < Integer.MAX_VALUE; i++) { if (i % 1000 == 0) { // System.out.println("i = " + i); // list = new ArrayList(); } else { // list.add(new Integer(i)); } Integer key = new Integer(i % 10000); long[] value = new long[2000]; // System.out.println("Put " + key + " -> " + value); region.put(key, value); } } }