進程全域區(PGA)即可以理解為Process Global Area,也可以理解為Program Global Area.它的記憶體段是在進程私人區(Process Private Memory)而不是在共用區(Shared Memory).它是個全域區意味著它包含了所有代碼有可能進入的全域變數和資料結構,但是它是不被所有進程共用的.每個Oracle的伺服器處理序都包含有屬於自己的PGA,它只包含了本進程的相關特定資訊.PGA中的結構不需要由latches來保護,因為其它的進程是不能進入到這裡面來訪問的.
UGA HEAP中的Chunks可以從它們自己的會話中通過查看錶X$KSMUP獲得相關資訊,這個表的結構跟X$KSMSP是一樣的.UGA HEAP包含了一些有關fixed tables的非揮發性記憶體段,跟一些參數的設定有依賴關係.這些參數有OPEN_CURSORS,OPEN_LINKS,和MAX_ENABLE_ROLES.
Java Call Memory也是在CGA中.這一段記憶體比Oracle的其它記憶體段管理得更密集.它分成三個Space: Stack Space, New Space, Old Space.在New Space和Old Space中不再被參考使用的Chunks,根據它們在使用期間的長度及SIZE的不同,在調用的執行過程中將被當成不用的Chunks收集起來.New Space Chunks很多次的不用的Chunks的反覆收集過程中沒有被收集的Chunks將會被放到Old Space Chunks中.這是在Oracle記憶體管理中唯一的一個廢物收集(garbage collection),其它的Oracle記憶體段都是釋放Dead Chunks.
如果這個問題的出現是因為SWAP SPACE空間不足,而且換頁的動作非常頻繁而且較多,則需要減少系統一級的虛擬記憶體的使用,這個可以通過減少進程數也可以通過減少每個進程的記憶體限制.如果換頁動作不頻繁而且比較少,則需要調大SWAP SPACE SIZE.
Process Memory Deallocation:
Oracle堆的增長比它們的收縮要來得容易,當然它們的SIZE也是可以收縮的.在V$MYSTAT和V$SESSTAT視圖中,session的統計資訊session uga memory和session pga memory分別顯示了當前session的UGA和PGA的記憶體大小,包含內部的空閑空間.相應的統計資訊session uga memory max 和 session pga memory max分別顯示了在session的生存期間所使用過得最大的UGA和最大的PGA.