<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<meta name=Generator content="Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p
        {margin-right:0in;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman";}
p.NormalWeb1, li.NormalWeb1, div.NormalWeb1
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle19
        {font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I believe that I have a working first
draft. What&#8217;s the usual approach for putting it out there so folks can comment?
Shall I upload a patch to the JIRA issue or do most of you look at the
clone/fork on GitHub?</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>-- </span></font><font size=2 color=navy
  face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>Dave</span></font><font
 size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
 color:navy'> Marion</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b>
infinispan-dev-bounces@lists.jboss.org
[mailto:infinispan-dev-bounces@lists.jboss.org] <b><span style='font-weight:
bold'>On Behalf Of </span></b>david marion<br>
<b><span style='font-weight:bold'>Sent:</span></b> Thursday, January 20, 2011
7:53 AM<br>
<b><span style='font-weight:bold'>To:</span></b> infinispan-dev@lists.jboss.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [infinispan-dev] ISPN-863
- Thoughts / Questions</span></font></p>

<p class=MsoNormal style='margin-left:.5in'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>&nbsp;</span></font></p>

<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>I did exactly that last night. I
built a test that allocated HashEntry&lt;K,V&gt;[] just like&nbsp;it does
in&nbsp;the Segment constructor. I don't have the numbers&nbsp;in front of me
right now,&nbsp;but at the maximum size (2^30) and without specifying
concurrency&nbsp;it was&nbsp;trying to allocate 32 Segment objects&nbsp;each
having&nbsp;a HashEntry&lt;K,V&gt;[]&nbsp;with 2^25 elements. Each one of these
HashEntry&lt;K,V&gt;[] takes up&nbsp;around 128MB of&nbsp;memory.<br>
&nbsp;<br>
&gt; From: galder@redhat.com<br>
&gt; Date: Thu, 20 Jan 2011 09:38:43 +0100<br>
&gt; To: infinispan-dev@lists.jboss.org<br>
&gt; Subject: Re: [infinispan-dev] ISPN-863 - Thoughts / Questions<br>
&gt; <br>
&gt; <br>
&gt; On Jan 19, 2011, at 1:47 PM, david marion wrote:<br>
&gt; <br>
&gt; &gt; <br>
&gt; &gt; It was my problem. If -1 is set for maxEntries, then I am creating a
BoundedConcurrentHashMap with a size of Integer.MAX_VALUE. Then when I ran the
tests all of them ran out of memory. I should have looked at the stack trace a
little more closely. I am going to have to put logic in so that the maximum
capacity is determined by the amount of free memory when the cache is created.
Previously, if -1 was set for maxEntries, a ConcurrentHashMap was created with
maximum capacity of Integer.MAX_VALUE. I have not looked at the code, but my
guess is that it works because it grows over time and does not pre-allocate all
structures ahead of time.<br>
&gt; <br>
&gt; Hmmm, that sounds odd. Maybe you wanna build a test to show the exact
differences and see if too much is being allocated on startup?<br>
&gt; <br>
&gt; &gt; Any thoughts on logic for determining maximum capacity at creation
time? <br>
&gt; <br>
&gt; A percentage of the available free memory? 40% by default? You have to
accomodate for the other apps running on the same JVM, so we shouldn't be too
aggressive by default.<br>
&gt; <br>
&gt; &gt; <br>
&gt; &gt; &gt; From: galder@redhat.com<br>
&gt; &gt; &gt; Date: Wed, 19 Jan 2011 10:32:42 +0100<br>
&gt; &gt; &gt; To: infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; Subject: Re: [infinispan-dev] ISPN-863 - Thoughts / Questions<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; Out of curiosity, what is a code problem on your side? Or a set
up issue?<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; On Jan 19, 2011, at 4:29 AM, david marion wrote:<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; Disregard, I found the issue. Sorry for the spam.<br>
&gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; From: dlmarion@hotmail.com<br>
&gt; &gt; &gt; &gt; &gt; To: infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt; Date: Tue, 18 Jan 2011 20:39:21 -0500<br>
&gt; &gt; &gt; &gt; &gt; Subject: Re: [infinispan-dev] ISPN-863 - Thoughts /
Questions<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Hah, might be because the POM is configured to run
tests in parallel with a<br>
&gt; &gt; &gt; &gt; &gt; max heap size of 1GB. Can someone update<br>
&gt; &gt; &gt; &gt; &gt; http://community.jboss.org/wiki/ParallelTestSuite or<br>
&gt; &gt; &gt; &gt; &gt; http://community.jboss.org/wiki/InfinispanQuickStartGuideforDevelopers#Testi<br>
&gt; &gt; &gt; &gt; &gt; ng with instructions on how to run test serially (I
didn&#8217;t find anything wrt<br>
&gt; &gt; &gt; &gt; &gt; Maven surefire plugin)? Thanks<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; -----Original Message-----<br>
&gt; &gt; &gt; &gt; &gt; From: infinispan-dev-bounces@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt; [mailto:infinispan-dev-bounces@lists.jboss.org] On
Behalf Of Galder<br>
&gt; &gt; &gt; &gt; &gt; Zamarreņo<br>
&gt; &gt; &gt; &gt; &gt; Sent: Tuesday, January 18, 2011 6:12 AM<br>
&gt; &gt; &gt; &gt; &gt; To: infinispan -Dev List<br>
&gt; &gt; &gt; &gt; &gt; Subject: Re: [infinispan-dev] ISPN-863 - Thoughts /
Questions<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; Hmmm, try increasing -Xmx? Start with
-XX:+HeapDumpOnOutOfMemoryError<br>
&gt; &gt; &gt; &gt; &gt; -XX:HeapDumpPath=/tmp/java_heap and inspect the dump
with Eclipse MAT?...<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; On Jan 17, 2011, at 4:51 PM, david marion wrote:<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; same result.<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Date: Mon, 17 Jan 2011 11:54:15 -0300<br>
&gt; &gt; &gt; &gt; &gt; &gt; From: vblagoje@redhat.com<br>
&gt; &gt; &gt; &gt; &gt; &gt; To: infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt; &gt; Subject: Re: [infinispan-dev] ISPN-863 - Thoughts
/ Questions<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Its easier to run everything from command line
for two reason I can think<br>
&gt; &gt; &gt; &gt; &gt; of:<br>
&gt; &gt; &gt; &gt; &gt; &gt; - everyone has same env to compare results with
you<br>
&gt; &gt; &gt; &gt; &gt; &gt; - it is all ready to go<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; See http://community.jboss.org/wiki/InfinispanandMaven<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; On 11-01-17 11:38 AM, Dave wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; All,<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; I am trying to test some changes that I made
using Eclipse and the TestNG<br>
&gt; &gt; &gt; &gt; &gt; plugin. I am not familiar with TestNG. Are there any
settings that I should<br>
&gt; &gt; &gt; &gt; &gt; make? Any ideas?<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; java.lang.OutOfMemoryError: Java heap space<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.util.concurrent.BoundedConcurrentHashMap$HashEntry.newArray(B<br>
&gt; &gt; &gt; &gt; &gt; oundedConcurrentHashMap.java:295)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.util.concurrent.BoundedConcurrentHashMap$Segment.&lt;init&gt;(Bound<br>
&gt; &gt; &gt; &gt; &gt; edConcurrentHashMap.java:898)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.util.concurrent.BoundedConcurrentHashMap.&lt;init&gt;(BoundedConcur<br>
&gt; &gt; &gt; &gt; &gt; rentHashMap.java:1367)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.container.DefaultDataContainer.&lt;init&gt;(DefaultDataContainer.ja<br>
&gt; &gt; &gt; &gt; &gt; va:78)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.container.DefaultDataContainer.&lt;init&gt;(DefaultDataContainer.ja<br>
&gt; &gt; &gt; &gt; &gt; va:47)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.container.DefaultDataContainer.unBoundedDataContainer(Default<br>
&gt; &gt; &gt; &gt; &gt; DataContainer.java:93)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.DataContainerFactory.construct(DataContainerFactory<br>
&gt; &gt; &gt; &gt; &gt; .java:53)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.getOrCreateComponent(Abst<br>
&gt; &gt; &gt; &gt; &gt; ractComponentRegistry.java:315)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt; org.infinispan.factories.AbstractComponentRegistry.invokeInjectionMethod(Abs<br>
&gt; &gt; &gt; &gt; &gt; tractComponentRegistry.java:251)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry$Component.injectDependenc<br>
&gt; &gt; &gt; &gt; &gt; ies(AbstractComponentRegistry.java:840)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt; org.infinispan.factories.AbstractComponentRegistry.registerComponent(Abstrac<br>
&gt; &gt; &gt; &gt; &gt; tComponentRegistry.java:225)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.ComponentRegistry.registerComponent(ComponentRegist<br>
&gt; &gt; &gt; &gt; &gt; ry.java:120)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt; org.infinispan.factories.AbstractComponentRegistry.registerComponent(Abstrac<br>
&gt; &gt; &gt; &gt; &gt; tComponentRegistry.java:192)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.getOrCreateComponent(Abst<br>
&gt; &gt; &gt; &gt; &gt; ractComponentRegistry.java:323)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.invokeInjectionMethod(Abs<br>
&gt; &gt; &gt; &gt; &gt; tractComponentRegistry.java:251)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry$Component.injectDependenc<br>
&gt; &gt; &gt; &gt; &gt; ies(AbstractComponentRegistry.java:840)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.registerComponent(Abstrac<br>
&gt; &gt; &gt; &gt; &gt; tComponentRegistry.java:225)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt; org.infinispan.factories.ComponentRegistry.registerComponent(ComponentRegist<br>
&gt; &gt; &gt; &gt; &gt; ry.java:120)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.registerComponent(Abstrac<br>
&gt; &gt; &gt; &gt; &gt; tComponentRegistry.java:192)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt; org.infinispan.factories.AbstractComponentRegistry.getOrCreateComponent(Abst<br>
&gt; &gt; &gt; &gt; &gt; ractComponentRegistry.java:323)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.invokeInjectionMethod(Abs<br>
&gt; &gt; &gt; &gt; &gt; tractComponentRegistry.java:251)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt; org.infinispan.factories.AbstractComponentRegistry$Component.injectDependenc<br>
&gt; &gt; &gt; &gt; &gt; ies(AbstractComponentRegistry.java:840)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.registerComponent(Abstrac<br>
&gt; &gt; &gt; &gt; &gt; tComponentRegistry.java:225)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.ComponentRegistry.registerComponent(ComponentRegist<br>
&gt; &gt; &gt; &gt; &gt; ry.java:120)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.AbstractComponentRegistry.registerComponent(Abstrac<br>
&gt; &gt; &gt; &gt; &gt; tComponentRegistry.java:192)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.InternalCacheFactory.bootstrap(InternalCacheFactory<br>
&gt; &gt; &gt; &gt; &gt; .java:92)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.InternalCacheFactory.createAndWire(InternalCacheFac<br>
&gt; &gt; &gt; &gt; &gt; tory.java:78)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.factories.InternalCacheFactory.createCache(InternalCacheFacto<br>
&gt; &gt; &gt; &gt; &gt; ry.java:62)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.j<br>
&gt; &gt; &gt; &gt; &gt; ava:510)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java<br>
&gt; &gt; &gt; &gt; &gt; :440)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java<br>
&gt; &gt; &gt; &gt; &gt; :409)<br>
&gt; &gt; &gt; &gt; &gt; &gt; at<br>
&gt; &gt; &gt; &gt; &gt;
org.infinispan.config.ConfigurationValidationTest.testDefaultMemoryGuardConf<br>
&gt; &gt; &gt; &gt; &gt; iguration(ConfigurationValidationTest.java:100)<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; -----Original Message-----<br>
&gt; &gt; &gt; &gt; &gt; &gt; From: infinispan-dev-bounces@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt; [mailto:infinispan-dev-bounces@lists.jboss.org] On
Behalf Of Vladimir<br>
&gt; &gt; &gt; &gt; &gt; Blagojevic<br>
&gt; &gt; &gt; &gt; &gt; &gt; Sent: Friday, January 14, 2011 11:05 AM<br>
&gt; &gt; &gt; &gt; &gt; &gt; To: infinispan -Dev List<br>
&gt; &gt; &gt; &gt; &gt; &gt; Subject: Re: [infinispan-dev] ISPN-863 - Thoughts
/ Questions<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Hey David,<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; First of all kudos for taking on such a
non-trivial task!<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; On 11-01-14 12:22 AM, david marion wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; 1. Modify configuration in some way so that the
following can be<br>
&gt; &gt; &gt; &gt; &gt; specified:<br>
&gt; &gt; &gt; &gt; &gt; &gt; a. The percentage value of used JVM memory (i.e.
95) at which<br>
&gt; &gt; &gt; &gt; &gt; entries should be evicted to try and avoid an OOM
error.<br>
&gt; &gt; &gt; &gt; &gt; &gt; b. The number of items that should be evicted when
memory reaches<br>
&gt; &gt; &gt; &gt; &gt; this threshold<br>
&gt; &gt; &gt; &gt; &gt; &gt; 2. Modify LRU and LIRS Eviction class so that the
accessQueue member<br>
&gt; &gt; &gt; &gt; &gt; can be accessed by the new Eviction class so that two
access queues don&#8217;t<br>
&gt; &gt; &gt; &gt; &gt; have to be maintained.<br>
&gt; &gt; &gt; &gt; &gt; &gt; 3. Create a new Eviction class, a subclass of
LIRS, where the<br>
&gt; &gt; &gt; &gt; &gt; accessQueue is used from the Eviction strategy the
user specifies and the<br>
&gt; &gt; &gt; &gt; &gt; for loop in the execute method is exited when the
evicted set equals value<br>
&gt; &gt; &gt; &gt; &gt; from 1.b above.<br>
&gt; &gt; &gt; &gt; &gt; &gt; 4. Modify DataContainerFactory.construct() to
call<br>
&gt; &gt; &gt; &gt; &gt; DefaultDataContainer.boundedDataContainer() regardless
of eviction policy.<br>
&gt; &gt; &gt; &gt; &gt; This will always create a BoundedConcurrentHashMap<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; I don't think you have to extend LRU and LIRS, as
long as you implement<br>
&gt; &gt; &gt; &gt; &gt; EvictionPolicy you are fullfilling the contract. What
extending LRU and LIRS<br>
&gt; &gt; &gt; &gt; &gt; can do is give you some order in selecting proper
elements for eviction. I<br>
&gt; &gt; &gt; &gt; &gt; think the precise technical term in research
literature is &quot;eviction<br>
&gt; &gt; &gt; &gt; &gt; precision&quot;. <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; 1. <br>
&gt; &gt; &gt; &gt; &gt; &gt; 2. Create an instance of the new Eviction class
in each segment.<br>
&gt; &gt; &gt; &gt; &gt; &gt; 3. Modify BoundedConcurrentHashMap.Segment put
and replace methods<br>
&gt; &gt; &gt; &gt; &gt; such that when new values are going to be put into the
Segment, the memory<br>
&gt; &gt; &gt; &gt; &gt; usage is checked and the execute method is called on
the new Eviction class.<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Sounds right!<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; 1. <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Questions:<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; 1. What are the implications of using a
BoundedConcurrentHashMap<br>
&gt; &gt; &gt; &gt; &gt; instead of a ConcurrentHashMap when maxEntries is set
to -1?<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; I think none except you turn on eviction by using<br>
&gt; &gt; &gt; &gt; &gt; BoundedConcurrentHashMap.<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; 1. <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Thoughts<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; 1. This will not guarantee that an OOM error does
not occur. It will<br>
&gt; &gt; &gt; &gt; &gt; attempt to guard against an OOM caused by putting new
values into the cache.<br>
&gt; &gt; &gt; &gt; &gt; This will probably be more effective when the cache is
being used in<br>
&gt; &gt; &gt; &gt; &gt; client/server mode, and less effective when used in
embedded mode as to<br>
&gt; &gt; &gt; &gt; &gt; other code running in the JVM.<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; -- Dave Marion<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; Cheers,<br>
&gt; &gt; &gt; &gt; &gt; &gt; Vladimir<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt; &gt;
https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________
infinispan-dev mailing<br>
&gt; &gt; &gt; &gt; &gt; list infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt;
https://lists.jboss.org/mailman/listinfo/infinispan-dev_____________________<br>
&gt; &gt; &gt; &gt; &gt; __________________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; &gt; &gt; &gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; &gt; Galder Zamarreņo<br>
&gt; &gt; &gt; &gt; &gt; Sr. Software Engineer<br>
&gt; &gt; &gt; &gt; &gt; Infinispan, JBoss Cache<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; &gt; &gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt;
https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; <br>
&gt; &gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; &gt; &gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; &gt;
https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; &gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; --<br>
&gt; &gt; &gt; Galder Zamarreņo<br>
&gt; &gt; &gt; Sr. Software Engineer<br>
&gt; &gt; &gt; Infinispan, JBoss Cache<br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; <br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; &gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; infinispan-dev mailing list<br>
&gt; &gt; infinispan-dev@lists.jboss.org<br>
&gt; &gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev<br>
&gt; <br>
&gt; --<br>
&gt; Galder Zamarreņo<br>
&gt; Sr. Software Engineer<br>
&gt; Infinispan, JBoss Cache<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; infinispan-dev mailing list<br>
&gt; infinispan-dev@lists.jboss.org<br>
&gt; https://lists.jboss.org/mailman/listinfo/infinispan-dev</span></font></p>

</div>

</body>

</html>