Unter SWT werden für Farben Systemresourcen verwendet. Diese werden mit Hilfe des SWT Display erzeugt, und sollten disposed werden, sobald man sie nicht mehr benötigt.
                    Für ein ColorValue wird erst dann eine
                    Systemresource erzeugt, wenn sie tatsächlich benutzt wird und
                    wenn die gleiche Farbe nicht bereits existiert. Dazu wird ein
                    Color Cache verwendet, welcher für ColorValue
                    Keys SWT Farben liefert. Um für ein
                    ColorValue Objekt eine
                    gecachte SWT Farbe aus dem Cache zu
                    entfernen und anschließend zu disposen, kann man auf dem
                    ColorValue Objekt die Methode
                  
         
    void release();aufgerufen werden. Dies ist aber nur dann wirklich sinnvoll, wenn viele unterschiedliche Farben angelegt werden, welche man später nicht mehr benötigt, wie zum Beispiel für einen Color Chooser.
                    Die Farben der weiter vorne beschriebenen Klasse
                    Colors nach deren Verwendung wieder zu
                    releasen ist zwar möglich, bringt aber
                    nicht wirklich eine nennenswerte Speichereinsparung (alle 13
                    Farben benötigen zusammen grob überschlagen 130 Byte).
                  
         
Das folgende Beispiel zeigt eine Animation bei der 32768 unterschiedliche Farben verwendet werden. Diese würden ca. 320 kByte benötigen, weshalb sie direkt nach deren Verwendung wieder aus dem Cache released werden (Zeile 19):
1 final IAnimationRunner animationRunner = AnimationRunner.create(); 2 animationRunner.setDelay(20, TimeUnit.MILLISECONDS); 3 4 final Runnable animationStep = new Runnable() { 5 6 private int red = 0; 7 private int redIncrement = 1; 8 9 private int green = 0; 10 private int greenIncrement = 2; 11 12 private int blue = 0; 13 private int blueIncrement = 3; 14 15 @Override 16 public void run() { 17 final ColorValue color = new ColorValue(red, green, blue); 18 frame.setBackgroundColor(color); 19 color.release(); 20 21 red = red + redIncrement; 22 if (red >= 255) { 23 red = 255; 24 redIncrement = redIncrement * -1; 25 } 26 else if (red <= 0) { 27 red = 0; 28 redIncrement = redIncrement * -1; 29 } 30 31 green = green + greenIncrement; 32 if (green >= 255) { 33 green = 255; 34 greenIncrement = greenIncrement * -1; 35 } 36 else if (green <= 0) { 37 green = 0; 38 greenIncrement = greenIncrement * -1; 39 } 40 41 blue = blue + blueIncrement; 42 if (blue >= 255) { 43 blue = 255; 44 blueIncrement = blueIncrement * -1; 45 } 46 else if (blue <= 0) { 47 blue = 0; 48 blueIncrement = blueIncrement * -1; 49 } 50 51 animationRunner.run(this); 52 } 53 }; 54 55 animationRunner.start(); 56 animationRunner.run(animationStep);