History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: QA-38
Type: Oracle - Internals Oracle - Internals
Status: Closed Closed
Resolution: Answered
Priority: Major Major
Assignee: ubTools Support
Reporter: ubTools Support
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Questions & Answers

DBMS_XMLPARSER.FREEPARSER doesn't release UGA memory.

Created: 06/Jun/08 12:58 PM   Updated: 06/Jun/08 01:35 PM
Fix Version/s: None

Product Version: Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
Operating System: Solaris


 Description  « Hide
DBMS_XMLPARSER.FREEPARSER doesn't release UGA memory.

Session memory statistics before operation:

SQL> select name,value from v$sesstat a, v$statname b
  2  where a.statistic#=b.statistic#
  3  and b.name like '%memory%'
  4  and sid = 58
  5  order by value desc;

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
session pga memory                                                   424336
session pga memory max                                               424336
session uga memory                                                   209872
session uga memory max                                               209872
sorts (memory)                                                           16
workarea memory allocated                                                14

6 rows selected.

Operation:

...
dbms_xmlparser.parseclob (v_parser, data_for_table);
...
dbms_xmlparser.freeParser(v_parser);
...

Session memory statistics after operation:

SQL> select name,value from v$sesstat a, v$statname b
  2  where a.statistic#=b.statistic#
  3  and b.name like '%memory%'
  4  and sid = 58
  5  order by value desc;

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
session pga memory                                                 52396928
session pga memory max                                             52396928
session uga memory                                                 51816784
session uga memory max                                             51816784
sorts (memory)                                                           19
workarea memory allocated                                                14

6 rows selected.

An excerpt from HEAPDUMP LEVEL 4 (UGA) dump:

...
EXTENT 788 addr=ffffffff7ce90080
  Chunk ffffffff7ce90090 sz=      392    free      "               "
  Chunk ffffffff7ce90218 sz=      184    freeable  "kgiobdtb       "
  Chunk ffffffff7ce902d0 sz=     1112    recreate  "koh-kghu sessi "  latch=0
     ds ffffffff7ce9db50 sz=     1112 ct=        1
  Chunk ffffffff7ce90728 sz=     2136    freeable  "PLS non-lib hp "  ds=ffffffff7cf6abd8
  Chunk ffffffff7ce90f80 sz=     4288    freeable  "qmxdpls_subhea "  ds=ffffffff7ce96b78
  Chunk ffffffff7ce92040 sz=     4288    freeable  "qmxdpls_subhea "  ds=ffffffff7ce96b78
  Chunk ffffffff7ce93100 sz=     4288    freeable  "qmxdpls_subhea "  ds=ffffffff7ce96b78
  Chunk ffffffff7ce941c0 sz=     4288    freeable  "qmxdpls_subhea "  ds=ffffffff7ce96b78
  Chunk ffffffff7ce95280 sz=     4328    freeable  "qmxdpls_subhea "  ds=ffffffff7ce96b78
  Chunk ffffffff7ce96368 sz=       48    freeable  "allocator state"
  Chunk ffffffff7ce96398 sz=       72    freeable  "persistant defi"
  Chunk ffffffff7ce963e0 sz=       48    freeable  "kgbt           "
  Chunk ffffffff7ce96410 sz=       48    freeable  "frame segment  "
  Chunk ffffffff7ce96440 sz=       64    freeable  "qmxdpls_init_ug"
  Chunk ffffffff7ce96480 sz=       48    freeable  "frame segment  "
  Chunk ffffffff7ce964b0 sz=       72    freeable  "frame segment  "
  Chunk ffffffff7ce964f8 sz=       72    freeable  "kxsxsi: frame  "
  Chunk ffffffff7ce96540 sz=     1568    recreate  "qmxdpls_subhea "  latch=0
     ds ffffffff7ce96b78 sz= 50681480 ct=    11820
        ffffffff779d6940 sz=     4288
        ffffffff779d7a00 sz=     4288
        ffffffff779d8ac0 sz=     4288
        ffffffff779d9b80 sz=     4288
        ffffffff779dac40 sz=     4288
        ffffffff779dbd00 sz=     4288
        ffffffff779dcdc0 sz=     4288
        ffffffff779dde80 sz=     4288
        ffffffff779def40 sz=     4288
        ffffffff779c04c0 sz=     4288
        ffffffff779c1580 sz=     4288
        ffffffff779c2640 sz=     4288
        ffffffff779c3700 sz=     4288
        ffffffff779c47c0 sz=     4288
        ffffffff779c5880 sz=     4288
        ffffffff779c6940 sz=     4288
        ffffffff779c7a00 sz=     4288
...
       ffffffff7ce93100 sz=     4288
        ffffffff7ce941c0 sz=     4288
        ffffffff7ce95280 sz=     4328
  Chunk ffffffff7ce96b60 sz=      160    freeable  "qmxdpls_heapptr"
  Chunk ffffffff7ce96c00 sz=      232    freeable  "lob ctl struct "
  Chunk ffffffff7ce96ce8 sz=       80    freeable  "frame          "
  Chunk ffffffff7ce96d38 sz=       40    freeable  "private oac inf"
  Chunk ffffffff7ce96d60 sz=      128    freeable  "bnrdef and uac "
  Chunk ffffffff7ce96de0 sz=      600    recreate  "bind var heap  "  latch=0
     ds ffffffff7ce971f0 sz=      600 ct=        1
  Chunk ffffffff7ce97038 sz=      928    freeable  "kgiob          "
  Chunk ffffffff7ce973d8 sz=     4160    freeable  "koh-kghu sessi "  ds=ffffffff7cf65710
  Chunk ffffffff7ce98418 sz=     8192    freeable  "kdit           "
  Chunk ffffffff7ce9a418 sz=       40    free      "               "
  Chunk ffffffff7ce9a440 sz=     8192    freeable  "kdit           "
  Chunk ffffffff7ce9c440 sz=       48    freeable  "ktatt          "
  Chunk ffffffff7ce9c470 sz=       48    freeable  "kdit           "
  Chunk ffffffff7ce9c4a0 sz=       80    freeable  "kgicu          "
  Chunk ffffffff7ce9c4f0 sz=     5672    free      "               "
  Chunk ffffffff7ce9db18 sz=     2520    freeable  "koh-kghu sessio"
  Chunk ffffffff7ce9e4f0 sz=       48    freeable  "frame segment  "
  Chunk ffffffff7ce9e520 sz=       40    freeable  "frame segment  "
  Chunk ffffffff7ce9e548 sz=       72    freeable  "kxsxsi: frame  "
  Chunk ffffffff7ce9e590 sz=     2464    perm      "perm           "  alo=432
  Chunk ffffffff7ce9ef30 sz=       48    freeable  "allocator state"
  Chunk ffffffff7ce9ef60 sz=       80    freeable  "frame          "
  Chunk ffffffff7ce9efb0 sz=      128    freeable  "bnrdef and uac "
  Chunk ffffffff7ce9f030 sz=      600    recreate  "bind var heap  "  latch=0
     ds ffffffff7ce9f440 sz=      600 ct=        1
  Chunk ffffffff7ce9f288 sz=      928    freeable  "kgiob          "
  Chunk ffffffff7ce9f628 sz=     2520    freeable  "koh-kghu sessio"
EXTENT 789 addr=ffffffff7ce30080
  Chunk ffffffff7ce30090 sz=     2016    perm      "perm           "  alo=2016
 ...
Total heap size    = 51790440
FREE LISTS:
 Bucket 0 size=56
...
 Bucket 16 size=524312
 Bucket 17 size=2097176
Total free space   =   870336
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
  Chunk ffffffff7ce9e590 sz=     2464    perm      "perm           "  alo=432
  Chunk ffffffff7ce30090 sz=     2016    perm      "perm           "  alo=2016
  Chunk ffffffff7cf70090 sz=      288    perm      "perm           "  alo=288
  Chunk ffffffff7cf600a8 sz=    20320    perm      "perm           "  alo=20320
Permanent space    =    25088
******************************************************

DBMS_SESSION.FREE_UNUSED_USER_MEMORY did not help.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Change by ubTools Support - 06/Jun/08 01:29 PM
Field Original Value New Value
Description DBMS_XMLPARSER.FREEPARSER doesn't release UGA memory.

*Session memory statistics before operation:*

{noformat}
SQL> select name,value from v$sesstat a, v$statname b
  2 where a.statistic#=b.statistic#
  3 and b.name like '%memory%'
  4 and sid = 58
  5 order by value desc;

NAME VALUE
---------------------------------------------------------------- ----------
session pga memory 424336
session pga memory max 424336
session uga memory 209872
session uga memory max 209872
sorts (memory) 16
workarea memory allocated 14

6 rows selected.
{noformat}

*Operation:*

{noformat}
...
dbms_xmlparser.parseclob (v_parser, data_for_table);
...
dbms_xmlparser.freeParser(v_parser);
...
{noformat}

*Session memory statistics after operation:*

{noformat}
SQL> select name,value from v$sesstat a, v$statname b
  2 where a.statistic#=b.statistic#
  3 and b.name like '%memory%'
  4 and sid = 58
  5 order by value desc;

NAME VALUE
---------------------------------------------------------------- ----------
session pga memory 52396928
session pga memory max 52396928
session uga memory 51816784
session uga memory max 51816784
sorts (memory) 19
workarea memory allocated 14

6 rows selected.
{noformat}

*An excerpt from HEAPDUMP LEVEL 4 (UGA) dump:*

{noformat}
...
EXTENT 788 addr=ffffffff7ce90080
  Chunk ffffffff7ce90090 sz= 392 free " "
  Chunk ffffffff7ce90218 sz= 184 freeable "kgiobdtb "
  Chunk ffffffff7ce902d0 sz= 1112 recreate "koh-kghu sessi " latch=0
     ds ffffffff7ce9db50 sz= 1112 ct= 1
  Chunk ffffffff7ce90728 sz= 2136 freeable "PLS non-lib hp " ds=ffffffff7cf6abd8
  Chunk ffffffff7ce90f80 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce92040 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce93100 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce941c0 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce95280 sz= 4328 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce96368 sz= 48 freeable "allocator state"
  Chunk ffffffff7ce96398 sz= 72 freeable "persistant defi"
  Chunk ffffffff7ce963e0 sz= 48 freeable "kgbt "
  Chunk ffffffff7ce96410 sz= 48 freeable "frame segment "
  Chunk ffffffff7ce96440 sz= 64 freeable "qmxdpls_init_ug"
  Chunk ffffffff7ce96480 sz= 48 freeable "frame segment "
  Chunk ffffffff7ce964b0 sz= 72 freeable "frame segment "
  Chunk ffffffff7ce964f8 sz= 72 freeable "kxsxsi: frame "
  Chunk ffffffff7ce96540 sz= 1568 recreate "qmxdpls_subhea " latch=0
     ds ffffffff7ce96b78 sz= 50681480 ct= 11820
        ffffffff779d6940 sz= 4288
        ffffffff779d7a00 sz= 4288
        ffffffff779d8ac0 sz= 4288
        ffffffff779d9b80 sz= 4288
        ffffffff779dac40 sz= 4288
        ffffffff779dbd00 sz= 4288
        ffffffff779dcdc0 sz= 4288
        ffffffff779dde80 sz= 4288
        ffffffff779def40 sz= 4288
        ffffffff779c04c0 sz= 4288
        ffffffff779c1580 sz= 4288
        ffffffff779c2640 sz= 4288
        ffffffff779c3700 sz= 4288
        ffffffff779c47c0 sz= 4288
        ffffffff779c5880 sz= 4288
        ffffffff779c6940 sz= 4288
        ffffffff779c7a00 sz= 4288
...
       ffffffff7ce93100 sz= 4288
        ffffffff7ce941c0 sz= 4288
        ffffffff7ce95280 sz= 4328
  Chunk ffffffff7ce96b60 sz= 160 freeable "qmxdpls_heapptr"
  Chunk ffffffff7ce96c00 sz= 232 freeable "lob ctl struct "
  Chunk ffffffff7ce96ce8 sz= 80 freeable "frame "
  Chunk ffffffff7ce96d38 sz= 40 freeable "private oac inf"
  Chunk ffffffff7ce96d60 sz= 128 freeable "bnrdef and uac "
  Chunk ffffffff7ce96de0 sz= 600 recreate "bind var heap " latch=0
     ds ffffffff7ce971f0 sz= 600 ct= 1
  Chunk ffffffff7ce97038 sz= 928 freeable "kgiob "
  Chunk ffffffff7ce973d8 sz= 4160 freeable "koh-kghu sessi " ds=ffffffff7cf65710
  Chunk ffffffff7ce98418 sz= 8192 freeable "kdit "
  Chunk ffffffff7ce9a418 sz= 40 free " "
  Chunk ffffffff7ce9a440 sz= 8192 freeable "kdit "
  Chunk ffffffff7ce9c440 sz= 48 freeable "ktatt "
  Chunk ffffffff7ce9c470 sz= 48 freeable "kdit "
  Chunk ffffffff7ce9c4a0 sz= 80 freeable "kgicu "
  Chunk ffffffff7ce9c4f0 sz= 5672 free " "
  Chunk ffffffff7ce9db18 sz= 2520 freeable "koh-kghu sessio"
  Chunk ffffffff7ce9e4f0 sz= 48 freeable "frame segment "
  Chunk ffffffff7ce9e520 sz= 40 freeable "frame segment "
  Chunk ffffffff7ce9e548 sz= 72 freeable "kxsxsi: frame "
  Chunk ffffffff7ce9e590 sz= 2464 perm "perm " alo=432
  Chunk ffffffff7ce9ef30 sz= 48 freeable "allocator state"
  Chunk ffffffff7ce9ef60 sz= 80 freeable "frame "
  Chunk ffffffff7ce9efb0 sz= 128 freeable "bnrdef and uac "
  Chunk ffffffff7ce9f030 sz= 600 recreate "bind var heap " latch=0
     ds ffffffff7ce9f440 sz= 600 ct= 1
  Chunk ffffffff7ce9f288 sz= 928 freeable "kgiob "
  Chunk ffffffff7ce9f628 sz= 2520 freeable "koh-kghu sessio"
EXTENT 789 addr=ffffffff7ce30080
  Chunk ffffffff7ce30090 sz= 2016 perm "perm " alo=2016
 ...
Total heap size = 51790440
FREE LISTS:
 Bucket 0 size=56
...
 Bucket 16 size=524312
 Bucket 17 size=2097176
Total free space = 870336
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
  Chunk ffffffff7ce9e590 sz= 2464 perm "perm " alo=432
  Chunk ffffffff7ce30090 sz= 2016 perm "perm " alo=2016
  Chunk ffffffff7cf70090 sz= 288 perm "perm " alo=288
  Chunk ffffffff7cf600a8 sz= 20320 perm "perm " alo=20320
Permanent space = 25088
******************************************************

{noformat}

DBMS_XMLPARSER.FREEPARSER doesn't release UGA memory.

*Session memory statistics before operation:*

{noformat}
SQL> select name,value from v$sesstat a, v$statname b
  2 where a.statistic#=b.statistic#
  3 and b.name like '%memory%'
  4 and sid = 58
  5 order by value desc;

NAME VALUE
---------------------------------------------------------------- ----------
session pga memory 424336
session pga memory max 424336
session uga memory 209872
session uga memory max 209872
sorts (memory) 16
workarea memory allocated 14

6 rows selected.
{noformat}

*Operation:*

{noformat}
...
dbms_xmlparser.parseclob (v_parser, data_for_table);
...
dbms_xmlparser.freeParser(v_parser);
...
{noformat}

*Session memory statistics after operation:*

{noformat}
SQL> select name,value from v$sesstat a, v$statname b
  2 where a.statistic#=b.statistic#
  3 and b.name like '%memory%'
  4 and sid = 58
  5 order by value desc;

NAME VALUE
---------------------------------------------------------------- ----------
session pga memory 52396928
session pga memory max 52396928
session uga memory 51816784
session uga memory max 51816784
sorts (memory) 19
workarea memory allocated 14

6 rows selected.
{noformat}

*An excerpt from HEAPDUMP LEVEL 4 (UGA) dump:*

{noformat}
...
EXTENT 788 addr=ffffffff7ce90080
  Chunk ffffffff7ce90090 sz= 392 free " "
  Chunk ffffffff7ce90218 sz= 184 freeable "kgiobdtb "
  Chunk ffffffff7ce902d0 sz= 1112 recreate "koh-kghu sessi " latch=0
     ds ffffffff7ce9db50 sz= 1112 ct= 1
  Chunk ffffffff7ce90728 sz= 2136 freeable "PLS non-lib hp " ds=ffffffff7cf6abd8
  Chunk ffffffff7ce90f80 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce92040 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce93100 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce941c0 sz= 4288 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce95280 sz= 4328 freeable "qmxdpls_subhea " ds=ffffffff7ce96b78
  Chunk ffffffff7ce96368 sz= 48 freeable "allocator state"
  Chunk ffffffff7ce96398 sz= 72 freeable "persistant defi"
  Chunk ffffffff7ce963e0 sz= 48 freeable "kgbt "
  Chunk ffffffff7ce96410 sz= 48 freeable "frame segment "
  Chunk ffffffff7ce96440 sz= 64 freeable "qmxdpls_init_ug"
  Chunk ffffffff7ce96480 sz= 48 freeable "frame segment "
  Chunk ffffffff7ce964b0 sz= 72 freeable "frame segment "
  Chunk ffffffff7ce964f8 sz= 72 freeable "kxsxsi: frame "
  Chunk ffffffff7ce96540 sz= 1568 recreate "qmxdpls_subhea " latch=0
     ds ffffffff7ce96b78 sz= 50681480 ct= 11820
        ffffffff779d6940 sz= 4288
        ffffffff779d7a00 sz= 4288
        ffffffff779d8ac0 sz= 4288
        ffffffff779d9b80 sz= 4288
        ffffffff779dac40 sz= 4288
        ffffffff779dbd00 sz= 4288
        ffffffff779dcdc0 sz= 4288
        ffffffff779dde80 sz= 4288
        ffffffff779def40 sz= 4288
        ffffffff779c04c0 sz= 4288
        ffffffff779c1580 sz= 4288
        ffffffff779c2640 sz= 4288
        ffffffff779c3700 sz= 4288
        ffffffff779c47c0 sz= 4288
        ffffffff779c5880 sz= 4288
        ffffffff779c6940 sz= 4288
        ffffffff779c7a00 sz= 4288
...
       ffffffff7ce93100 sz= 4288
        ffffffff7ce941c0 sz= 4288
        ffffffff7ce95280 sz= 4328
  Chunk ffffffff7ce96b60 sz= 160 freeable "qmxdpls_heapptr"
  Chunk ffffffff7ce96c00 sz= 232 freeable "lob ctl struct "
  Chunk ffffffff7ce96ce8 sz= 80 freeable "frame "
  Chunk ffffffff7ce96d38 sz= 40 freeable "private oac inf"
  Chunk ffffffff7ce96d60 sz= 128 freeable "bnrdef and uac "
  Chunk ffffffff7ce96de0 sz= 600 recreate "bind var heap " latch=0
     ds ffffffff7ce971f0 sz= 600 ct= 1
  Chunk ffffffff7ce97038 sz= 928 freeable "kgiob "
  Chunk ffffffff7ce973d8 sz= 4160 freeable "koh-kghu sessi " ds=ffffffff7cf65710
  Chunk ffffffff7ce98418 sz= 8192 freeable "kdit "
  Chunk ffffffff7ce9a418 sz= 40 free " "
  Chunk ffffffff7ce9a440 sz= 8192 freeable "kdit "
  Chunk ffffffff7ce9c440 sz= 48 freeable "ktatt "
  Chunk ffffffff7ce9c470 sz= 48 freeable "kdit "
  Chunk ffffffff7ce9c4a0 sz= 80 freeable "kgicu "
  Chunk ffffffff7ce9c4f0 sz= 5672 free " "
  Chunk ffffffff7ce9db18 sz= 2520 freeable "koh-kghu sessio"
  Chunk ffffffff7ce9e4f0 sz= 48 freeable "frame segment "
  Chunk ffffffff7ce9e520 sz= 40 freeable "frame segment "
  Chunk ffffffff7ce9e548 sz= 72 freeable "kxsxsi: frame "
  Chunk ffffffff7ce9e590 sz= 2464 perm "perm " alo=432
  Chunk ffffffff7ce9ef30 sz= 48 freeable "allocator state"
  Chunk ffffffff7ce9ef60 sz= 80 freeable "frame "
  Chunk ffffffff7ce9efb0 sz= 128 freeable "bnrdef and uac "
  Chunk ffffffff7ce9f030 sz= 600 recreate "bind var heap " latch=0
     ds ffffffff7ce9f440 sz= 600 ct= 1
  Chunk ffffffff7ce9f288 sz= 928 freeable "kgiob "
  Chunk ffffffff7ce9f628 sz= 2520 freeable "koh-kghu sessio"
EXTENT 789 addr=ffffffff7ce30080
  Chunk ffffffff7ce30090 sz= 2016 perm "perm " alo=2016
 ...
Total heap size = 51790440
FREE LISTS:
 Bucket 0 size=56
...
 Bucket 16 size=524312
 Bucket 17 size=2097176
Total free space = 870336
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
  Chunk ffffffff7ce9e590 sz= 2464 perm "perm " alo=432
  Chunk ffffffff7ce30090 sz= 2016 perm "perm " alo=2016
  Chunk ffffffff7cf70090 sz= 288 perm "perm " alo=288
  Chunk ffffffff7cf600a8 sz= 20320 perm "perm " alo=20320
Permanent space = 25088
******************************************************

{noformat}

DBMS_SESSION.FREE_UNUSED_USER_MEMORY did not help.


ubTools Support - 06/Jun/08 01:35 PM
The UGA of PGA had been filled with a big chunk which has recreatable "qmxdpls_subhea". This chunk is 50681480 byte. (See QA-8 for the simple definitions of HEAPDUMP).

Oracle Note:3518909.8:

Calling Dbms_xmlparser.freeParser / dbms_xmldom.freeDocument in the procudure do not 
appear to free the memory.

The leaked memory shows in heapdumps as "qmxdpls_subheap"

Although the mentioned bug fixed in Oracle 9.2.0.6; the customer encounters the same problem in Oracle 9.2.0.8.

Since the next usage of DBMS_XMLPARSER.PARSECLOB after a previous DBMS_XMLPARSER.FREEPARSER within the same session, the UGA did not grow. This is acceptable by the customer.


Change by ubTools Support - 06/Jun/08 01:35 PM
Status Open [ 1 ] Closed [ 6 ]
Resolution Answered [ 10 ]