diff --git includes/object-cache.inc includes/object-cache.inc
index 0e11107..c1922ca 100644
--- includes/object-cache.inc
+++ includes/object-cache.inc
@@ -153,12 +153,36 @@ function ctools_object_cache_clear_all($obj, $name) {
  * specified age.
  *
  * @param $age
- *   The minimum age of objects to remove, in seconds. For example, 86400 is
- *   one day. Defaults to 7 days.
+ *   Optional; The minimum age of objects to remove, in seconds. For example, 86400 is
+ *   one day. Defaults to 7 days (86400 * 7).
+ * @param $obj
+ *   Optional; The object name to clear.
+ * @param $name
+ *   Optional; The name the belongs to the object. This will be used only if the
+ *   $obj paramter is set.
  */
-function ctools_object_cache_clean($age = NULL) {
-  if (empty($age)) {
-    $age = 86400 * 7; // 7 days
+function ctools_object_cache_clean($age = 604800, $obj = '', $name = '') {
+  $param = array();
+  $param[] = array('clause' => 'updated < %d', 'argument' => time() - $age);
+
+  if (!empty($obj)) {
+    // Remove older objects from a specific cache.
+    $param[] = array('clause' => "obj = '%s'", 'argument' => $obj);
+
+    if (!empty($name)) {
+      $param[] = array('clause' => "name = '%s'", 'argument' => $name);
+    }
   }
-  db_query("DELETE FROM {ctools_object_cache} WHERE updated < %d", time() - $age);
+
+  // Build the query and arguments.
+  $clauses = $arguments = array();
+
+  foreach ($param as $value) {
+    $clauses[] = $value['clause'];
+    $arguments[] = $value['argument'];
+  }
+
+  $query = 'DELETE FROM {ctools_object_cache} WHERE ' . implode(' AND ', $clauses);
+
+  db_query($query, implode(',', $arguments));
 }
