[ 
https://issues.apache.org/jira/browse/UIMA-4677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marshall Schor updated UIMA-4677:
---------------------------------
    Description: 
Feature Structures have IDs; these show up in externalized formats.  In v2, 
these were the int heap address.  In V3, these are incrementing ints, starting 
at 1.  

Support is needed (for backwards compatibility, and perhaps other uses) to go 
from an "id" to the Java Feature Structure.  The id's are dense, except for 
those which might be reclaimed by the garbage collector.  We support the 
reverse map from ids to Feature Structures using a list of Feature Structures, 
kept in creation order.  Since IDs continually increment, all addition is done 
at the end. 

To allow garbage collection to work, this table references the Feature 
Structures via WeakReferences.  -The table supports also a version where GC for 
Feature Structures is disabled; this might be needed for some applications 
where users held onto low level ints and expected to be able to get the Feature 
Structures from them, even if they weren't reachable via some non-GC'd Java 
Object.-

-When operated in gc-enabled mode, the binary search to find an element is 
modified to skip any WeakReferences whose data has been garbage collected.  
Furthermore, the table is reorganized occasionally to reclaim no-longer-used 
WeakReference.-

The table is a simple ArrayList; it is reset when the cas is reset.  The above 
crossed-out optimizations are not used.

  was:
Feature Structures have IDs; these show up in externalized formats.  In v2, 
these were the int heap address.  In V3, these are incrementing ints, starting 
at 1.  

Support is needed (for backwards compatibility, and perhaps other uses) to go 
from an "id" to the Java Feature Structure.  The id's are dense, except for 
those which might be reclaimed by the garbage collector.  We support the 
reverse map from ids to Feature Structures using a list of Feature Structures, 
kept in creation order.  Since IDs continually increment, all addition is done 
at the end. 

To allow garbage collection to work, this table references the Feature 
Structures via WeakReferences.  -The table supports also a version where GC for 
Feature Structures is disabled; this might be needed for some applications 
where users held onto low level ints and expected to be able to get the Feature 
Structures from them, even if they weren't reachable via some non-GC'd Java 
Object.-

-When operated in gc-enabled mode, the binary search to find an element is 
modified to skip any WeakReferences whose data has been garbage collected.  
Furthermore, the table is reorganized occasionally to reclaim no-longer-used 
WeakReference.-


> UV3 Internal support for Feature Structure IDs
> ----------------------------------------------
>
>                 Key: UIMA-4677
>                 URL: https://issues.apache.org/jira/browse/UIMA-4677
>             Project: UIMA
>          Issue Type: Sub-task
>          Components: Core Java Framework
>            Reporter: Marshall Schor
>            Assignee: Marshall Schor
>             Fix For: 3.0.0SDKexp
>
>
> Feature Structures have IDs; these show up in externalized formats.  In v2, 
> these were the int heap address.  In V3, these are incrementing ints, 
> starting at 1.  
> Support is needed (for backwards compatibility, and perhaps other uses) to go 
> from an "id" to the Java Feature Structure.  The id's are dense, except for 
> those which might be reclaimed by the garbage collector.  We support the 
> reverse map from ids to Feature Structures using a list of Feature 
> Structures, kept in creation order.  Since IDs continually increment, all 
> addition is done at the end. 
> To allow garbage collection to work, this table references the Feature 
> Structures via WeakReferences.  -The table supports also a version where GC 
> for Feature Structures is disabled; this might be needed for some 
> applications where users held onto low level ints and expected to be able to 
> get the Feature Structures from them, even if they weren't reachable via some 
> non-GC'd Java Object.-
> -When operated in gc-enabled mode, the binary search to find an element is 
> modified to skip any WeakReferences whose data has been garbage collected.  
> Furthermore, the table is reorganized occasionally to reclaim no-longer-used 
> WeakReference.-
> The table is a simple ArrayList; it is reset when the cas is reset.  The 
> above crossed-out optimizations are not used.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to