Bug #2396
memory leak when using shared frames
0%
Related issues
History
#1 Updated by Greg Shah over 9 years ago
In #1791 we found that using shared frames results in a memory leak because we never fully remove shared frames from the LogicalTerminal.widgetRegistry
once they are created.
The obvious place to remove them is in LT.releaseSharedFrame()
, which is the only way that shared frames actually "go away" permanently (since LT.deregisterFrameInt()
doesn't remove shared frames from the widgetRegistry
). But since LT.releaseSharedFrame()
is only called from inside GenericFrame.createSharedFrame()
, this means that we only permanently dispose of a shared frame when we create a new shared frame of the same name. This suggests that we have a memory leak, since there seems to be no particular point in time when we otherwise clear shared frames out.
We do know that we must leave these frames around until the creating external procedure exits, as we introduce regressions when we try to otherwise remove them earlier. We can potentially use the TransactionManager
for notification of the exit of the external procedure, however we need to properly handle the case of persistent procedures (where the external proc ends but holds resources in memory until the procedure is deleted).
#2 Updated by Greg Shah over 9 years ago
- Target version set to Milestone 17
#3 Updated by Greg Shah over 7 years ago
- Target version changed from Milestone 17 to Performance and Scalability Improvements