@@ -152,12 +152,7 @@ private List<CSG> getCachedCSGs(CaDoodleOperation op) {
152152 Log .debug ("Loading Cached Objects from file: " +cacheFile .getAbsolutePath ());
153153 //Log.error(new Exception());
154154 try (ObjectInputStream ois = new ObjectInputStream (new FileInputStream (cacheFile ))) {
155- if (getFreeMemory ()>50 ) {
156- com .neuronrobotics .sdk .common .Log .error ("\n \n Updated Memory use: " + getFreeMemory () + "\n \n " );
157- cache .clear ();
158- }else {
159- com .neuronrobotics .sdk .common .Log .debug ("Memory use: " + getFreeMemory ());
160- }
155+ memoryCheck ();
161156 cache .put ( op ,(List <CSG >) ois .readObject ());
162157
163158 } catch (Exception ex ) {
@@ -166,6 +161,15 @@ private List<CSG> getCachedCSGs(CaDoodleOperation op) {
166161 }
167162 return cache .get (op );
168163 }
164+ private void memoryCheck () {
165+ if (getFreeMemory ()>50 ) {
166+ com .neuronrobotics .sdk .common .Log .error ("\n \n Updated Memory use: " + getFreeMemory () + "\n \n " );
167+ cache .clear ();
168+ System .gc ();
169+ }else {
170+ //com.neuronrobotics.sdk.common.Log.debug("Memory use: " + getFreeMemory());
171+ }
172+ }
169173
170174 private void placeCSGsInCache (CaDoodleOperation op , List <CSG > cachedCopy ) {
171175 int opIndex = opToIndex (op );
@@ -175,21 +179,40 @@ private void placeCSGsInCache(CaDoodleOperation op, List<CSG> cachedCopy) {
175179 cacheFile .delete ();
176180 try (ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream (cacheFile ))) {
177181 oos .writeObject (cachedCopy );
182+ // ObjectInputStream ois = new ObjectInputStream(new FileInputStream(cacheFile));
183+ // List<CSG> readback = (List<CSG>) ois.readObject();
184+ // ois.close();
185+ // for(int i=0;i<cachedCopy.size();i++) {
186+ // CSG down = cachedCopy.get(i);
187+ // CSG back = readback.get(i);
188+ // if(down.getRegenerate()!= back.getRegenerate()) {
189+ // throw new RuntimeException("Data loss! getRegenerate");
190+ // }
191+ // if(down.getManufacturing()!= back.getManufacturing()) {
192+ // throw new RuntimeException("Data loss! getManufacturing");
193+ // }
194+ // if(down.getParameters(getCsgDBinstance()).size() !=
195+ // back.getParameters(getCsgDBinstance()).size()) {
196+ // throw new RuntimeException("Data loss! getParameters");
197+ // }
198+ // }
199+ Log .debug ("Saved " +cacheFile .getAbsolutePath ());
178200 }catch (Exception ex ) {
179201 Log .error (ex );
180202 throw new RuntimeException (ex );
181203 }
182- // cache.put(op, cachedCopy);
204+ memoryCheck ();
205+ cache .put (op , cachedCopy );
183206 }
184207 private void clearCache (CaDoodleOperation key ) {
185208 int opIndex = opToIndex (key );
186209 File cacheFile = new File (objectDir .getAbsolutePath ()+delim ()+opIndex );
187210 if (cacheFile .exists ())
188211 cacheFile .delete ();
189212
190- // List<CSG> back = cache.remove(key);
191- // if (back != null)
192- // back.clear();
213+ List <CSG > back = cache .remove (key );
214+ if (back != null )
215+ back .clear ();
193216 }
194217
195218
@@ -246,7 +269,7 @@ public void initialize() {
246269 if (op == null )
247270 continue ;
248271 setPercentInitialized (((double ) i ) / (double ) getOpperations ().size ());
249- if (!inCache (op ))
272+ // if(!inCache(op))
250273 try {
251274 process (op );
252275 } catch (Throwable t ) {
0 commit comments