added cache_clear function

--HG--
branch : trunk
diff --git a/jinja2/__init__.py b/jinja2/__init__.py
index 0ab7423..cd720a6 100644
--- a/jinja2/__init__.py
+++ b/jinja2/__init__.py
@@ -49,7 +49,8 @@
 
 # decorators and public utilities
 from jinja2.filters import environmentfilter, contextfilter
-from jinja2.utils import Markup, escape, environmentfunction, contextfunction
+from jinja2.utils import Markup, escape, clear_caches, \
+     environmentfunction, contextfunction
 
 __all__ = [
     'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
@@ -58,5 +59,5 @@
     'TemplateError', 'UndefinedError', 'TemplateNotFound',
     'TemplateSyntaxError', 'TemplateAssertionError', 'environmentfilter',
     'contextfilter', 'Markup', 'escape', 'environmentfunction',
-    'contextfunction'
+    'contextfunction', 'clear_caches'
 ]
diff --git a/jinja2/debug.py b/jinja2/debug.py
index a9b4439..9209054 100644
--- a/jinja2/debug.py
+++ b/jinja2/debug.py
@@ -3,7 +3,9 @@
     jinja2.debug
     ~~~~~~~~~~~~
 
-    Implements the debug interface for Jinja.
+    Implements the debug interface for Jinja.  This module does some pretty
+    ugly stuff with the Python traceback system in order to achieve tracebacks
+    with correct line numbers, locals and contents.
 
     :copyright: Copyright 2008 by Armin Ronacher.
     :license: BSD.
diff --git a/jinja2/lexer.py b/jinja2/lexer.py
index 772dee2..b8a363f 100644
--- a/jinja2/lexer.py
+++ b/jinja2/lexer.py
@@ -23,7 +23,7 @@
 
 # cache for the lexers. Exists in order to be able to have multiple
 # environments with the same lexer
-_lexer_cache = LRUCache(10)
+_lexer_cache = LRUCache(50)
 
 # static regular expressions
 whitespace_re = re.compile(r'\s+(?um)')
diff --git a/jinja2/utils.py b/jinja2/utils.py
index 6a5c9a0..e8f6fd7 100644
--- a/jinja2/utils.py
+++ b/jinja2/utils.py
@@ -47,6 +47,18 @@
     return f
 
 
+def clear_caches():
+    """Jinja2 keeps internal caches for environments and lexers.  These are
+    used so that Jinja2 doesn't have to recreate environments and lexers all
+    the time.  Normally you don't have to care about that but if you are
+    messuring memory consumption you may want to clean the caches.
+    """
+    from jinja2.environment import _spontaneous_environments
+    from jinja2.lexer import _lexer_cache
+    _spontaneous_environments.clear()
+    _lexer_cache.clear()
+
+
 def import_string(import_name, silent=False):
     """Imports an object based on a string.  This use useful if you want to
     use import paths as endpoints or something similar.  An import path can