[
https://issues.jboss.org/browse/JGRP-1770?page=com.atlassian.jira.plugin....
]
Bela Ban updated JGRP-1770:
---------------------------
Description:
In Table.removeMany() when nulling the last column of a row, we don't null the entire
row. The effect is that we have rows (arrays) with all columns being empty remain in
memory, which wastes memory.
Note that Table.purge() actually does null entire rows, this is called by
* NAKACK2: here, method stable() triggered by STABLE calls {{Table.purge(seqno)}}, so
we're nulling entire rows. This is not a problem.
* UNICAST3 *sender entries*: here, reception of an ACK(seqno) also calls
{{Table.purge(seqno)}}, so this is not an issue, either
The only issue is UNICAST3 *receiver entries*: here, {{Table.purge()}} is never called;
elements are only nulled, but not entire rows.
SOLUTION:
When {{Table.removeMany()}} nulls an element, if that element is the last element of a row
(index = {{elements_per_row -1}}, then null the entire row.
EFFECT:
There's less memory held in memory by UNICAST3 receiver entries
was:
In Table.removeMany() when nulling the last column of a row, we don't null the entire
row. The effect is that we have rows (arrays) with all columns being empty remain in
memory, which wastes memory.
Note that Table.purge() actually does null entire rows, this is called by
* NAKACK2: here, method stable() triggered by STABLE calls {{Table.purge(seqno)}}, so
we're nulling entire rows. This is not a problem.
* UNICAST3 *sender entries*: here, reception of an ACK(seqno) also calls
{{Table.purge(seqno)}}, so this is not an issue, either
The only issue is UNICAST3 *receiver entries*: here, {{Table.purge()}} is never called;
elements are only nulled, but not entire rows.
SOLUTION:
When {{Table.removeMany()}} nulls an element, if that element is tha last element of a row
(index = {{elements_per_row -1}}, then null the entire row.
EFFECT:
There's less memory held in memory by UNICAST3 receiver entries
Table: null row when removing last element
------------------------------------------
Key: JGRP-1770
URL:
https://issues.jboss.org/browse/JGRP-1770
Project: JGroups
Issue Type: Enhancement
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 3.5
In Table.removeMany() when nulling the last column of a row, we don't null the entire
row. The effect is that we have rows (arrays) with all columns being empty remain in
memory, which wastes memory.
Note that Table.purge() actually does null entire rows, this is called by
* NAKACK2: here, method stable() triggered by STABLE calls {{Table.purge(seqno)}}, so
we're nulling entire rows. This is not a problem.
* UNICAST3 *sender entries*: here, reception of an ACK(seqno) also calls
{{Table.purge(seqno)}}, so this is not an issue, either
The only issue is UNICAST3 *receiver entries*: here, {{Table.purge()}} is never called;
elements are only nulled, but not entire rows.
SOLUTION:
When {{Table.removeMany()}} nulls an element, if that element is the last element of a
row (index = {{elements_per_row -1}}, then null the entire row.
EFFECT:
There's less memory held in memory by UNICAST3 receiver entries
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira