[ https://issues.apache.org/jira/browse/IGNITE-1661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14954542#comment-14954542 ]
wjw465150 commented on IGNITE-1661: ----------------------------------- test code: package wjw.test.ignite.benchmark; import java.util.Arrays; import java.util.concurrent.CountDownLatch; import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import javax.cache.expiry.CreatedExpiryPolicy; import javax.cache.expiry.Duration; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.Ignition; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; public class GetBenchMarkMain { static final int COUNT = 100; //线程数 static final int LOOP = 10000; //每个线程循环次数 String serversURL = "127.0.0.1:47500..47509"; String cacheName = "default"; IgniteCache<String, String> cache1; class Worker implements Runnable { private CyclicBarrier barrier; private CountDownLatch doneSignal; private int pos; Worker(CyclicBarrier barrier, CountDownLatch doneSignal, int pos) { this.barrier = barrier; this.doneSignal = doneSignal; this.pos = pos; } public void run() { String data = "test(测试)Ignite"; try { barrier.await(); //System.out.println("线程:" + pos + ",开始调用get()"); String msg; for (int i = 1; i <= LOOP; i++) { msg = cache1.get(pos + ":" + i); if ((data + ":" + pos + ":" + i).equals(msg) == false) { System.out.println("线程:" + pos + ",get错误:" + msg); } } } catch (Exception e) { e.printStackTrace(); } finally { //System.out.println("线程:" + pos + ",结束调用get()"); doneSignal.countDown(); } } } public void doExecute(String[] args) { serversURL = args[0]; IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setPeerClassLoadingEnabled(false); cfg.setClientMode(true); TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi(); { TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(); ipFinder.setAddresses(Arrays.asList(serversURL.split(","))); discoverySpi.setIpFinder(ipFinder); cfg.setDiscoverySpi(discoverySpi); } Ignite ignite = Ignition.start(cfg); IgniteCache<String, String> cacheDefault = ignite.cache("default"); cache1 = cacheDefault.withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.MINUTES, 30))); CyclicBarrier barrier = new CyclicBarrier(COUNT); CountDownLatch doneSignal = new CountDownLatch(COUNT); ExecutorService exec = Executors.newFixedThreadPool(COUNT); long currentTimeMillis = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { exec.submit(new Worker(barrier, doneSignal, i)); } try { doneSignal.await(); //等待所有的线程完成工作 } catch (InterruptedException ex) { } float ticket = System.currentTimeMillis() - currentTimeMillis; System.out.println((COUNT * LOOP) + "次用时" + secondToHMS((long) (ticket / 1000))); System.out.println("平均每次:" + (ticket / (COUNT * LOOP)) + "毫秒"); System.out.println("平均每秒:" + ((COUNT * LOOP) / (ticket / 1000.00)) + "次"); exec.shutdown(); ignite.close(); } public static String secondToHMS(long ticket) { long day1 = ticket / (24 * 3600); long hour1 = ticket % (24 * 3600) / 3600; long minute1 = ticket % 3600 / 60; long second1 = ticket % 60; StringBuilder sb = new StringBuilder(); if (day1 > 0) { sb.append(day1 + "天"); } if (hour1 > 0) { sb.append(hour1 + "小时"); } if (minute1 > 0) { sb.append(minute1 + "分"); } sb.append(second1 + "秒"); return sb.toString(); } public static void main(String[] args) { if (args.length < 1) { System.out .println("用法:java -Xmx512m -cp ./classes:./lib/* wjw.test.ignite.benchmark.GetBenchMarkMain 服务器ip:服务器port1..服务器port2,服务器ip:服务器port1..服务器port2,..."); System.out .println("例如:java -Xmx512m -cp ./classes:./lib/* wjw.test.ignite.benchmark.GetBenchMarkMain T1:47500..47509,T2:47500..47509"); System.exit(0); } GetBenchMarkMain testGet = new GetBenchMarkMain(); testGet.doExecute(args); System.exit(0); } } > memory leak > ----------- > > Key: IGNITE-1661 > URL: https://issues.apache.org/jira/browse/IGNITE-1661 > Project: Ignite > Issue Type: Bug > Components: cache > Affects Versions: ignite-1.4 > Environment: centos 6.3 > Reporter: wjw465150 > > when use withExpiryPolicy cache,and CacheConfiguration.eagerTtl is set true, > this will cause heap memory leak! > code sample: > IgniteCache<String, String> cacheDefault = > ignite.cache("default"); > cache1 = cacheDefault.withExpiryPolicy(new > CreatedExpiryPolicy(new Duration(TimeUnit.MINUTES, 30))); -- This message was sent by Atlassian JIRA (v6.3.4#6332)