From the article "Creating Your Own Widgets using SWT" at
http://www.eclipse.org/articles/Article-Writing%20Your%20Own%20Widget/Writing%20Your%20Own%20Widget.htm
"Note: Do not just override dispose() to release the [resource]. This only works in the case where dispose is actually sent to the widget. When the shell is disposed this does not happen, so overriding dispose will leak the [resource]. To ensure that your widget is informed of an event no matter how it was generated, add an event listener instead of overriding methods that generate events."
KTable is overriding dispose() instead of adding a dispose listener. I've attached a patch file which follows the behavior outlined above.
Patch