code: private void clean(final Object buffer) throws Exception
      {
          AccessController.doPrivileged(new PrivilegedAction<Object>()
          {
              public Object run()
              {
                  try
                  {
                      Method getCleanerMethod = buffer.getClass().getMethod(
                              "cleaner", new Class[0]);
                      getCleanerMethod.setAccessible(true);
                      sun.misc.Cleaner cleaner = (sun.misc.Cleaner) getCleanerMethod
                              .invoke(buffer, new Object[0]);
                      cleaner.clean();
                  }
                  catch (Exception e)
                  {
                      e.printStackTrace();
                  }
                  return null;
              }
          });
      }
docs: Workaround taken from bug <a
  href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4724038">#4724038</a>
  to release the memory mapped byte buffer.
  <p>
  Little quote from SUN: <i>This is highly inadvisable, to put it mildly.
  It is exceedingly dangerous to forcibly unmap a mapped byte buffer that's
  visible to Java code. Doing so risks both the security and stability of
  the system</i>
  <p>
  Since the memory byte buffer used to map the file is not exposed to the
  outside world, maybe it's save to use it without being cursed by the SUN.
  Since there is no other solution this will do (don't trust voodoo GC
  invocation)
  
  @param buffer
  the buffer to be unmapped
  @throws Exception
  all kind of evil stuff