Hi,
This is cache implementation, it will not work if key has strong referense 
on value (or have bugs).
There is a very simple test in MemoryStore main method.
I send a correct implementation for SoftReferenceMap in commons collections 
a month ago, but it was forgot.
It is possible to implement cache with Map interface and memory store can 
wrap this map (it will be more useful). Is it interesting for anybody ?

output from test :

operations ...
1 removed from queue, size7
2 removed from queue, size15
3 removed from queue, size14
4 removed from queue, size13
5 removed from queue, size12
6 removed from queue, size11
7 removed from queue, size10
8 removed from queue, size9
9 removed from queue, size8
10 removed from queue, size7
11 removed from queue, size15
12 removed from queue, size14
13 removed from queue, size13
14 removed from queue, size12
15 removed from queue, size11
16 removed from queue, size10
17 removed from queue, size9
18 removed from queue, size8
19 removed from queue, size7
23 removed from queue, size15
24 removed from queue, size14
25 removed from queue, size13
26 removed from queue, size12
27 removed from queue, size11
28 removed from queue, size10
20 removed from queue, size9
21 removed from queue, size8
22 removed from queue, size7
29 removed from queue, size15
30 removed from queue, size14
31 removed from queue, size13
32 removed from queue, size12
33 removed from queue, size11
34 removed from queue, size10
35 removed from queue, size9
36 removed from queue, size8
37 removed from queue, size7
46 removed from queue, size15
38 removed from queue, size14
39 removed from queue, size13
40 removed from queue, size12
41 removed from queue, size11
42 removed from queue, size10
43 removed from queue, size9
44 removed from queue, size8
45 removed from queue, size7
47 removed from queue, size15
48 removed from queue, size14
49 removed from queue, size13
50 removed from queue, size12
51 removed from queue, size11
52 removed from queue, size10
53 removed from queue, size9
54 removed from queue, size8
55 removed from queue, size7
56 removed from queue, size15
57 removed from queue, size14
58 removed from queue, size13
59 removed from queue, size12
60 removed from queue, size11
61 removed from queue, size10
62 removed from queue, size9
63 removed from queue, size8
64 removed from queue, size7
69 removed from queue, size15
70 removed from queue, size14
71 removed from queue, size13
72 removed from queue, size12
73 removed from queue, size11
65 removed from queue, size10
66 removed from queue, size9
67 removed from queue, size8
68 removed from queue, size7
74 removed from queue, size15
75 removed from queue, size14
76 removed from queue, size13
77 removed from queue, size12
78 removed from queue, size11
79 removed from queue, size10
80 removed from queue, size9
81 removed from queue, size8
82 removed from queue, size7
83 removed from queue, size15
84 removed from queue, size14
85 removed from queue, size13
86 removed from queue, size12
87 removed from queue, size11
88 removed from queue, size10
89 removed from queue, size9
90 removed from queue, size8
91 removed from queue, size7
92 removed from queue, size15
93 removed from queue, size14
94 removed from queue, size13
95 removed from queue, size12
96 removed from queue, size11
97 removed from queue, size10
98 removed from queue, size9
99 removed from queue, size8
100 removed from queue, size7
101 removed from queue, size15
102 removed from queue, size14
103 removed from queue, size13
104 removed from queue, size12
105 removed from queue, size11
106 removed from queue, size10
107 removed from queue, size9
108 removed from queue, size8
109 removed from queue, size7
115 removed from queue, size15
116 removed from queue, size14
117 removed from queue, size13
118 removed from queue, size12
110 removed from queue, size11
111 removed from queue, size10
112 removed from queue, size9
113 removed from queue, size8
114 removed from queue, size7
119 removed from queue, size15
120 removed from queue, size14
121 removed from queue, size13
122 removed from queue, size12
123 removed from queue, size11
124 removed from queue, size10
125 removed from queue, size9
126 removed from queue, size8
127 removed from queue, size7
128 removed from queue, size15
129 removed from queue, size14
130 removed from queue, size13
131 removed from queue, size12
132 removed from queue, size11
133 removed from queue, size10
134 removed from queue, size9
135 removed from queue, size8
136 removed from queue, size7
138 removed from queue, size15
139 removed from queue, size14
140 removed from queue, size13
141 removed from queue, size12
142 removed from queue, size11
143 removed from queue, size10
144 removed from queue, size9
145 removed from queue, size8
137 removed from queue, size7
146 removed from queue, size15
147 removed from queue, size14
148 removed from queue, size13
149 removed from queue, size12
150 removed from queue, size11
151 removed from queue, size10
152 removed from queue, size9
153 removed from queue, size8
154 removed from queue, size7
161 removed from queue, size15
162 removed from queue, size14
163 removed from queue, size13
155 removed from queue, size12
156 removed from queue, size11
157 removed from queue, size10
158 removed from queue, size9
159 removed from queue, size8
160 removed from queue, size7
164 removed from queue, size15
165 removed from queue, size14
166 removed from queue, size13
167 removed from queue, size12
168 removed from queue, size11
169 removed from queue, size10
170 removed from queue, size9
171 removed from queue, size8
172 removed from queue, size7
173 removed from queue, size15
174 removed from queue, size14
175 removed from queue, size13
176 removed from queue, size12
177 removed from queue, size11
178 removed from queue, size10
179 removed from queue, size9
180 removed from queue, size8
181 removed from queue, size7
184 removed from queue, size15
185 removed from queue, size14
186 removed from queue, size13
187 removed from queue, size12
188 removed from queue, size11
189 removed from queue, size10
190 removed from queue, size9
182 removed from queue, size8
183 removed from queue, size7
191 removed from queue, size15
192 removed from queue, size14
193 removed from queue, size13
194 removed from queue, size12
195 removed from queue, size11
196 removed from queue, size10
197 removed from queue, size9
198 removed from queue, size8
199 removed from queue, size7
207 removed from queue, size15
208 removed from queue, size14
200 removed from queue, size13
201 removed from queue, size12
202 removed from queue, size11
203 removed from queue, size10
204 removed from queue, size9
205 removed from queue, size8
206 removed from queue, size7
209 removed from queue, size15
210 removed from queue, size14
211 removed from queue, size13
212 removed from queue, size12
213 removed from queue, size11
214 removed from queue, size10
215 removed from queue, size9
216 removed from queue, size8
217 removed from queue, size7
218 removed from queue, size15
219 removed from queue, size14
220 removed from queue, size13
221 removed from queue, size12
222 removed from queue, size11
223 removed from queue, size10
224 removed from queue, size9
225 removed from queue, size8
226 removed from queue, size7
230 removed from queue, size15
231 removed from queue, size14
232 removed from queue, size13
233 removed from queue, size12
234 removed from queue, size11
235 removed from queue, size10
227 removed from queue, size9
228 removed from queue, size8
229 removed from queue, size7
236 removed from queue, size15
237 removed from queue, size14
238 removed from queue, size13
239 removed from queue, size12
240 removed from queue, size11
241 removed from queue, size10
242 removed from queue, size9
243 removed from queue, size8
244 removed from queue, size7
iterating cache ...
252
251
250
249
248
247
246
245
254
253
0
At 07:40 PM 1/14/2002 +0100, you wrote:
>Juozas
>
> >-----Original Message-----
> >From: Juozas Baliuka [mailto:[EMAIL PROTECTED]]
> >Sent: Monday, January 14, 2002 8:20 PM
> >To: Jakarta Commons Developers List
> >Subject: RE: [simplestore] inital check in
> >
> >
> >Hi,
> >I read documentation tested all Reference types today.
> >The problem exists, object is cleared before reference is queued.
> >There is no way to flush expired object to stable storage if it has no
> >strong references,
> >but you can solve it this way :
> >WRITE:
> >0. Test queue, clear pooled references.
> >1. write object .
> >2. Add internal strong and Weak reference, make it a "new".
> >3. Put weak reference to cache.
> >4. release strong internal references from "old" objects.
> >READ:
> >0. Test queue, clear pooled references.
> >1. Search in Cashe.
> >2. Load object, if  not found.
> >3. Add internal strong and Weak references, make object a "new".
> >4. Put weak reference to Cashe.
> >5. Release strong internal references from "old" objects.
> >6. return object.
> >
> >No need for "background cleanup".
> >I can implement this kind of cache, if it interesting for some body.
> >I have some my cache implementations, but they are not very "common" :)
>
>Kool, mate. How about a MRU based Memory Store which is implemented with
>week reference. We can call it SoftMRUMemoryStore or something else. Just
>send compilable code and I will check it in for you. Keep sending patches,
>it's valuable ;-).
>
>Stand by for patches
>
>   Gerhard
>
> >At 05:28 PM 1/14/2002 +0100, you wrote:
> >>Juozas,
> >>
> >> >From: Juozas Baliuka [mailto:[EMAIL PROTECTED]]
> >> >
> >> >>
> >> >>StoreJanitorImpl: you can register your Memory Stores in
> >> >>this class. A background Thread checks if memory running
> >> >>slow in you JVM and if yes it frees some objects out of the
> >> >>registered Stores.
> >> >
> >> >Hi,
> >> >I think it is better to use java.lang.ref.* to solve problems related to
> >> >memory management.
> >> >Application threads are not permitted  in EJB container and I believe GC
> >> >will do it better.
> >> >
> >> >It is from JDK documentation :
> >> >"Soft reference objects, which are cleared at the discretion of the 
> garbage
> >> >collector in response to memory demand. Soft references are most 
> often used
> >> >to implement memory-sensitive caches. "
> >>
> >>Aha, it's a shame but I never looked into this. But I do it right now!
> >>Does anybody(you) have experiences with this soft references and
> >>how to use them?
> >>
> >>Yes I know RTFM ;-)!
> >>
> >>   Gerhard
> >>
> >>"A man with one watch knows what time it is,
> >>a man with two watches is never sure...
> >>(Albert Einstein)"
> >>
> >>
> >>--
> >>To unsubscribe, 
> e-mail:   <mailto:[EMAIL PROTECTED]>
> >>For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>
> >
> >
> >
> >--
> >To unsubscribe, 
> e-mail:   <mailto:[EMAIL PROTECTED]>
> >For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
>--
>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Attachment: SynchronizedStore.java
Description: Binary data

Attachment: MemoryStore.java
Description: Binary data

Attachment: ObjectNotFoundException.java
Description: Binary data

Attachment: Store.java
Description: Binary data

Attachment: StoreException.java
Description: Binary data

Attachment: DublicateKeyException.java
Description: Binary data


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to