Skip to content

Commit 9c8d0a3

Browse files
committed
add the objects loaded to the cache on saving
1 parent 767e132 commit 9c8d0a3

File tree

1 file changed

+34
-11
lines changed

1 file changed

+34
-11
lines changed

src/main/java/com/neuronrobotics/bowlerstudio/scripting/cadoodle/CaDoodleFile.java

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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\nUpdated 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\nUpdated 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

Comments
 (0)