<< Back to previous view

[QA-8] Heapdump Interpretation Created: 15/Jul/07  Updated: 16/Sep/07

Status: Closed
Project: Questions & Answers
Fix Version/s: None

Type: Oracle - Internals Priority: Major
Reporter: ubTools Support Assignee: ubTools Support
Resolution: Answered Votes: 0

Product Version: ???
Operating System: Generic

 Description   
I have a process which is taking up way more memory than I'd expected. The process runs a PL/SQL that does some nested loop joins on a PL/SQL table.

The background process is using > 200Mb of private memory and this number goes up if we tweak the WHERE clause in the join to return more data.

I did a heapdump of the process and the trace file looks like this (lots of stuff trimmed):

 
...
EXTENT 437
Chunk 925dfe4 sz= 1836 perm "perm " alo=1836
Chunk 925e710 sz= 1156 recreate "session heap " latch=0
ds 92693fc sz= 30315156 ct= 440
b7aa56c sz= 3980
92f30a0 sz= 1072
afb6e34 sz= 16472
afb2dcc sz= 16472
afaed64 sz= 16472
...

I presume that "session heap" is the UGA for this process'
session. Basically it goes on like this for several pages with sz anywhere between 16k and 1Mb. How can I interpret this? I presume the memory is to do with cursor information. This is a sort but the sort area size is only 10Mb and cannot account for all the private memory in use.

I'm just trying to decide if this is a reasonable amount of memory to be using (i.e. explain what it is using it for) and just put up with it, or if something has gone wrong. I'm on 8.1.5 on Linux 2.2 (I know, I know...)

Thanks for any insight!



 Comments   
Comment by ubTools Support [ 15/Jul/07 01:03 PM ]

Answer:

A heap consists of memory areas named extent. Each extent consists of memory areas named chunks.

Interpretation:

 
EXTENT 437
  Chunk 925dfe4 sz=     1836    perm      "perm           "
alo=1836
  Chunk  925e710 sz=     1156    recreate  "session heap   "
latch=0

EXTENT 437        ---> extent number
925dfe4           ----> chunk address
sz=               -----> size of chunk
perm              ------> permanent memory class
"perm           " ------> chunk comment

Memory classes can be the followings:

  • Recreatable (can be removed and then recreated when requested. i.e: shared SQL statements)
  • Free (free, no object in it)
  • Freeable(used in session/call duration)
  • Permanent(for permament objects)

Each chunk in same extent is contiguous. For your case, the first chunk address(0x925dfe4) + its size(1836) = the second chunk address (0x925e710)

For your problem:

Shared memory segments such as SGA are included in process address space. So, You may be encoutering this problem. Search metalink for pmap command.

Generated at Tue Sep 16 03:24:15 UTC 2025 using JIRA Standard Edition, Version: 3.12.3-#302.