mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xend: fix memory leak resulting in long garbage collector runs
In the method xen.xend.XendStateStore.XendStateStore.load_state and xen.xend.XendStateStore.XendStateStore.save_state the minidom objects used to load/save the current state of a device type, can't be freed by the python garbage collector after all references to the top node are cleared, because of cyclic references between the DOM nodes. So memory usage of xend increases after calling these methods. To solve this problem, the unlink() method must be called for a minidom object before the last reference to the top node is cleared (see python docs). This breaks the cyclic references, so the garbage collector can free these objects. Signed-off-by: juergen.gross@ts.fujitsu.com
This commit is contained in:
1 parent
ce09aeeba7
commit
f275a935a2
1 file changed
+2
-1
@@ -147,6 +147,7 @@ class XendStateStore:
|
||||
cls_dict[val_name] = bool(int(val_text))
|
||||
state[uuid] = cls_dict
|
||||
|
||||
dom.unlink()
|
||||
return state
|
||||
|
||||
def save_state(self, cls, state):
|
||||
@@ -226,5 +227,5 @@ class XendStateStore:
|
||||
node.appendChild(val_node)
|
||||
|
||||
open(xml_path, 'w').write(doc.toprettyxml())
|
||||
|
||||
doc.unlink()
|
||||
|
||||