Estimate memory usage in bytes rather than pixel area, assuming an int per

pixel for now.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2034 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Walter Korman
2002-12-07 02:04:32 +00:00
parent ea545bcb66
commit acaf39b070
6 changed files with 85 additions and 25 deletions
@@ -1,5 +1,5 @@
//
// $Id: ActionFrames.java,v 1.6 2002/09/17 19:11:13 mdb Exp $
// $Id: ActionFrames.java,v 1.7 2002/12/07 02:04:31 shaper Exp $
package com.threerings.cast;
@@ -49,4 +49,10 @@ public interface ActionFrames
* colorizations applied to the frame images.
*/
public ActionFrames cloneColorized (Colorization[] zations);
/**
* Returns the estimated memory usage in bytes for all images cached
* internally for use by the action frames.
*/
public long getEstimatedMemoryUsage ();
}
@@ -1,5 +1,5 @@
//
// $Id: CharacterManager.java,v 1.25 2002/12/07 01:10:25 shaper Exp $
// $Id: CharacterManager.java,v 1.26 2002/12/07 02:04:31 shaper Exp $
package com.threerings.cast;
@@ -184,15 +184,31 @@ public class CharacterManager
// periodically report our action cache performance
if (!_cacheStatThrottle.throttleOp()) {
long size = getEstimatedCacheMemoryUsage();
int[] eff = _frames.getTrackedEffectiveness();
Log.debug("CharacterManager LRU " +
"[hits=" + eff[0] + ", misses=" + eff[1] +
", size=" + _frames.size() + "].");
"[mem=" + (size / 1024) + "k, size=" + _frames.size() +
", hits=" + eff[0] + ", misses=" + eff[1] + "].");
}
return frames;
}
/**
* Returns the estimated memory usage in bytes for all images
* currently cached by the cached action frames.
*/
protected long getEstimatedCacheMemoryUsage ()
{
long size = 0;
Iterator iter = _frames.values().iterator();
while (iter.hasNext()) {
ActionFrames frame = (ActionFrames)iter.next();
size += frame.getEstimatedMemoryUsage();
}
return size;
}
/**
* Generates the composited animation frames for the specified action
* for a character with the specified descriptor.
@@ -1,5 +1,5 @@
//
// $Id: CompositedActionFrames.java,v 1.8 2002/09/17 19:11:13 mdb Exp $
// $Id: CompositedActionFrames.java,v 1.9 2002/12/07 02:04:31 shaper Exp $
package com.threerings.cast;
@@ -114,6 +114,21 @@ public class CompositedActionFrames
throw new RuntimeException("What you talkin' about Willis?");
}
// documentation inherited from interface
public long getEstimatedMemoryUsage ()
{
long size = 0;
for (int orient = 0; orient < _orientCount; orient++) {
for (int ii = 0; ii < _images[orient].length; ii++) {
Image image = _images[orient][ii];
if (image != null) {
size += ImageUtil.getEstimatedMemoryUsage(image);
}
}
}
return size;
}
// documentation inherited
protected Image getFrame (int orient, int index)
{
@@ -1,5 +1,5 @@
//
// $Id: BundledComponentRepository.java,v 1.19 2002/10/18 23:47:27 shaper Exp $
// $Id: BundledComponentRepository.java,v 1.20 2002/12/07 02:04:31 shaper Exp $
package com.threerings.cast.bundle;
@@ -416,6 +416,15 @@ public class BundledComponentRepository
_set.cloneColorized(zations), _actseq);
}
// documentation inherited from interface
public long getEstimatedMemoryUsage ()
{
throw new RuntimeException(
"Can't provide memory usage information since " +
"TileSetFrameImage makes use of an underlying tile set " +
"and we don't know said tileset's memory usage.");
}
/**
* Fetches the requested tile.
*/