
Originally Posted by
julio.arguello
I have detected and fixed some performance related issues when dealing with event lists.
See details here:
http://code.google.com/p/bluebell/issues/detail?id=31
Basically consists on reducing drastically the number of events been raised and also reduces the cost of cloning within <code>DeepCopyBufferedCollectionValueModel</code>.
There is another memory leak that you might want to fix as well. When using VLDocking, you'll see this in VLDockingApplicationPage class:
Code:
private class DefaultLayoutManager implements VLDockingLayoutManager
{
/*
* (non-Javadoc)
*
* @seeorg.springframework.richclient.application.vldocking.
* VLDockingLayoutManager
* #addDockable(com.vlsolutions.swing.docking.DockingDesktop,
* com.vlsolutions.swing.docking.Dockable)
*/
public void addDockable(DockingDesktop desktop, Dockable dockable)
{
desktop.addDockable(dockable);
}
/*
* (non-Javadoc)
*
* @seeorg.springframework.richclient.application.vldocking.
* VLDockingLayoutManager
* #removeDockable(com.vlsolutions.swing.docking.DockingDesktop,
* com.vlsolutions.swing.docking.Dockable)
*/
public void removeDockable(DockingDesktop desktop, Dockable dockable)
{
desktop.remove(dockable);
}
The problem with this piece of code is that if you close and reopen the same view multiple times, docking context ends up with a lot of stale docking state objects that have already been removed. The correct usage is:
Code:
public void removeDockable(DockingDesktop desktop, Dockable dockable)
{
desktop.remove(dockable);
desktop.unregisterDockable(dockable);
}