zoukankan      html  css  js  c++  java
  • PL/SQL Virtual Machine Memory Usage

    PL/SQL Program Units即PL/SQL程序单元,常被叫做"library units"或lib-units. 参考以下模块类型:
    • package spec
    • package body
    • top-level function or procedure
    • type spec
    • type body
    • trigger
    • anonymous blocks.
    PL/SQL 虚拟机的内存使用主要体现在4个方面:
    • PGA
      • PL/SQL stack call,用于保存本地变量和其他一些状态结构
      • NCOMP生成的动态链接库文件
    • CGA
      • 二级内存(secondary memory),分配的堆和大的可收缩本地变量如大的strings、Lob或collections
    • UGA
      • 程度单元的实例(library-unit instantiations),如package global variables, DL0/ DL1 dependency vectors, display frame等
    • SGA 共享池中的MCODE子堆
    KGL - Kernel Generic Library Manager 该layer管理会话间需要共享的资源,如PL/SQL MCODE,Diana,Source,SQL cursor,SQL Plan) KGI - Kernel Generic Instantiation Layer. 该layer管理特定会话非共享的资源,如实例化的包含了包全局变量状态信息的PL/SQL程序单元 KOH/KGH 该layer用以管理heap service堆服务 KGL_Entry_PLSQL_UNIT   PLSQL MCODE Heap的属性
    • machine dependent binary format for a compiled PL/SQL library-unit.
    • to execute code in a lib-unit, its MCODE heap must be loaded in memory.
    • MCODE is loaded in SGA and is “pinned” for CALL duration.
    • once unpinned, the heap may be aged; hence, may need to get re-loaded.
    • important to page large data structures in SGA.
    MCODE Heap: Subcomponents
    • EntryPoint Piece (PL_UEP)
    • Code Segment or Byte Code Piece (PL_UCP)
    • Constant Pool:
      • Data Segment (PL_UKP)
      • Handle Segment (PL_UHS)
    • SQL Strings Table (PL_USP)
    PL/SQL Instantiations
    • When a lib-unit is first referenced by a program (session) an instantiation of the lib unit is created.
    • PL/SQL relies on KGI for inst obj mgmt.
    • A PL/SQL lib-unit instantiation consists of:
      • PLIO struct (the handle of the PL/SQL inst obj)
      • Static Frame
      • Secondary (Heap) Memory for package globals
    • PLIO Struct
      • first portion of PLIO struct is the KGIOB struct (kgi’s portion of the object handle)
      • points to the static frame struct (PLIOST)
      • also contains other book-keeping info (such as memory duration of instantiation’s work area, etc.)
    • Static Frame:
      • represents that part of instantiation’s work area whose size is compile-time determined.
      • the root of the static frame is PLIOST struct which leads the following sub-pieces:
        • depends-on array to global variable vectors (DL0)
        • depends-on array to other instantiations (DL1)
        • Display Frame (DPF)
        • global variable vector for this unit (GF)
        • primary memory for global variables.
    • Secondary Memory for package globals
      • used to allocate data types that are stored out-of-line (heap allocated) e.g., collections, large strings, large records, LOBs, datetime types, etc.
    Structure of a PLSQL Instantiation Object Memory Model In PLSQL Instantiation
  • 相关阅读:
    Yii笔记之filter用法 j神
    [转载]C# 剪切板编程 Clipboard
    [转载]3521工程
    [原创]获取委托链方式,用于多播委托。
    [转载]C#为应用程序注册快捷键 Ctrl+C Ctrl+V
    【原创】序列化/反序列化
    【原创】WinForm操作EXCEL(第三方插件NPOI)
    【原创】MyXls导出Excel (适用于Winform/WebForm)
    【原创】特性与反射(一)
    【原创】特性与反射(二)
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2967836.html
Copyright © 2011-2022 走看看