🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1199

��Դ����

#1199
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
182 lines
14115 bytes
 �ڴ�©��
    ���������ڵġ�Ԥװ�����һ�����ᵽ��"�ڴ�©��(Memory L
eak)",���dz���Ա���û����ܹ��ĵ����⡣һ������װ�벢�ҷ���
���ڴ�,���ڶ��󱻹ر�ʱȴû���ͷŷ�����ڴ�,����,�ڴ�©����
�����ˡ��ڿ���������Ҳ�����ڴ�©��,���������޷����Ƶ�,������
�DZ���ע�������Լ��Ĵ�������ɵ��ڴ�©����
    ���п�������ڴ�©������,ʹ��CREATE��䴴��һ�������û
���ö�Ӧ��DESTROY���������ۺ�ʱ,��CREATE������һ����
��,�ͱ��븺���ڸö���ִ�����֮���ͷŷ�����ڴ档
    ��:����һ��transaction����:
    Transaction My_Transaction
    My_transaction=CREATE Transaction
    ��������������,Ӧ�����ö���:
    DESTROY-My-Transaction
    (ע��:SQLCA��Ӧ���Զ�����,ͬʱҲ�Զ��رա�)
    �ڴ�©���ij��־������뿪����ʹ���˷ǿ��ӻ��û������йء�
��Ϊ���ֶ���ֻ����C REATE��䴴�����һ��ʵ��,����粻����ʹ
��DESTROY������,���Ȼ���´���������OpenUserObject��Open
User-ObjectWithParm����Ķ�̬�û�����,ͬ��Ҫ�󿪷����ڽ�
��ʹ������ʱ������Ӧ��CloseUserObject����
    ����֪��,PowerBuilder�ܹ��Զ�������һ�������еij����
��,����Ϊʲô������Ӧ�ý���ʱ�Զ�����û��Լ������Ķ�����?��
ΪPowerBuilder�������ؼ��б��еĶ���,����ֻ��һ������(�細
��)����������Щ����Ż����ڿؼ��б?��(�������ɼ�Ķ���);
 ��̬���û�����ͷǿ��ӻ�����,��PowerBuilderȫ�ֶ����ʵ��
(transactions��error ��message�ȵ�)һ��,���ڶ���Ŀ����б���
��������ӵ������ϵġ��رո�����ʱ,ϵͳ����֪��Ҫ�����Щ��
̬����Ķ��������û���ֹ��������,���ǽ�һֱ���ִ�
״̬,����פ���ڴ���,ֱ��ʹ�ù��������,���߹ر�Windowsϵͳ��
ʹ����Windows3.1 Reso urce Kit���ṩ���ڴ���Դ���������Ĺ�
��,��ʹ���ڲ��Թ���м����Դ��ȷ����Դ����Ԥ��������ͷ�
��

    �ڴ����
    ��Windows3.xƽ̨��,������Ա����ʱ���������������:������
��32M�ڴ�,����ֻ������Ӧ��������,����PowerBuilderȴ������ʾ
�ڴ治��(Out of Memory)�����û���ʹ��ijӦ�����ʱ,Ҳ��ͬ���
���ڴ治�������,�����û�ֻ�ùر������Ӧ��,ֱ�����ֹر���ij
һ�����ͷ����㹻���ڴ�ռ�ɹ�PowerBuilder����Ϊֹ�������û�
��ʼ��Թ������,���߿�ʼ��ԹPowerBuilder��
    ��ʵ�ڶ��������,���Ƕ���Ӧ������,����ĸ�Դ����Window
s���?����֪��,���ϸ������Ͻ�,Windows������һ������ϵͳ,��
ֻ��һ��DOSӦ�ó���,����ȻҪ��̶��ij���ռ䡣��Щ�ռ�ֲ���
1M���µ���λ�ڴ��С������ʹ�ô����/C��DOS����MEM,��ῴ
���������µ���ʾ(�����±�)��
    ������DOS�ڴ�����640K��1M��λ�ڴ��֮����360K(Լ384,000
�ֽ�)�Ŀ����ڴ�,������ʾ��,"��λ"�ڴ��"����"�ڴ�֮��ȴ�н�5
00K���á�"����"�ڴ�һ������װ������������������,��"Win38
6"һ��Ҳ��ʾ����42K����,���DZ���Щ��Ҫ�̶���ַ�ռ��Ӧ��ʹ��
�ġ���Windows����һ��������ʱ,Windows��װ��ģ��Ϊ�����񴴽�
һ��������ݿ�(TDB )�����������ݿ���뱻װ�뵽1MB�����ڴ�,
������С����Ϊ200�ֽڡ�ԭ����������ݿ���ĵڶ�������һ����
���ǰ׺(PSP),����Windows1.0��2.0��3.0ʵģʽ�����,ʹ�����
Ψһԭ���Ǹ�����׵ص���Ӧ�����õ�MS-DOS��չ�����ڱ���ģʽ��
Windows�в����DZ����,������Windows3.1����ģʽ���Ա�������һ
�ṹ��
    ������Ļ����ж����ڴ�,��ij������ȥ��ȡ��ο��ÿռ�,û
��ʲô����������������һ����,�Լ����潫�ᵽ��64K GDI��USER
��,��Windows3.X���������ƵĴ��롣
    ���е�Windows�����������ҪһЩ����1M���µ��ڴ������
��������һ��ij���������һЩ�̶����ڴ���,��Щ����Ҫ����
����һЩ�ڴ�ռ�,����Щ�д���ij����ܿ����ĵ�������޵�
�ڴ�ռ�,��ͻ����ǰ���������ᵽ���ڴ治�����⡣����PowerBu
i lder�����������Լ�ȥ������Щϡ�е���Դ,��Ҳʹ�����޷����
����ԭ��������ڴ治�����⡣
    C����Ա�����Ϥ��GMEM_FIXED������Global-DosAlloc�������
�ڴ档������������ͼ�������1M���ڴ档HEAPWALK.EXE(��
��Windows SDK��C++��������)�����Ӧ�ó����ܲ鿴1M���·����
�ڴ��,�Ӷ��׼ȷ��ȷ����ЩӦ�óԵ��˱�����ڴ���Դ��������M
S -DOS�е�LoadHigh����,��һЩפ������װ��߶˶��ͷų����ڴ�,
��������Ҳ�����˿��õ���λ�ڴ�,��ð취ֻ�������ԡ�

    ����Windows��Դ
    ��������Windows�г��������������Դ,������USER��GDI��Դ
����Щ��Դ��������������������ݿ���һ��,Ҳ�DZ�Windows����
�������ڴ����Ƶ�,���Ƕ��в��ܳ���64K�����ơ�����ζ����ʱ����
�ǻ����ڴ������������ڴ治�㡣
    GDI��Դ����Ӧ�����õ�����Դ�����豸�����ġ�ÿ��λͼ��
ͼ�ꡢ��ꡢ��ݴ��ڡ��û�����ʹ��ڶ���Ҫ������Դ������Զ�
�幤������GDI��Դ���������,����һ�㲻�������鷳�����ڡ����
���ںͰ�ť�������ù�GDI��Դ��GDI��Դ������һ��������ȼ��ٵ�
20%���¡�
    USER��ԴҲ��ÿ��������Ҫ����Դ�����һ���û�������һ��
�������,����ÿ��������ҪUSER��Դ(����������ȵ�),����
����µ��ö�̬�򿪻�رյĶ�����Ȼ������ġ���Ϊ��ݴ����ǵ�
һ����,����ʹ����ݴ�����Ϊ���󼯺�Ҳ�Ǹ���Щ��Դ���ٸ�����
һ���÷�����
    ͨ����������,���ǿ��Կ���Windows3.x�п��õ��ڴ�Զ������
��ʼ�����Ҫ�١�Wind ows95Ҳ�?�Ỻ����һ����,������۲졣
    ��̬�����Դ���
    ���,���ǽ���һ���ܰ���������ʱ�������ϵͳ��Դ����̡�
�������ᵽ��,ʹ��Pow erBuilder,���Dz��ܿ���ϵͳ����Դ��ʹ��,
�������ǿ�����һЩ�򵥵�SDK��������������Դ��ʹ�á����ǽ�
ʹ��һ���ǿ��ӻ�������ΪSDK�Ľ�����󡣵�Ȼ��Ҳ���Խ�SDK����
����Ϊȫ���ⲿ����ͨ��ȫ�ֺ������������ǡ�
    ����һ:
    ����API���ʶ���NVO_API_ACCESS;
    ����һ������������Ӧ���¼�,����CONSTRUC-TOR�¼��д�����
�¼�;
    ����һ�����ڳ�ʼ�����û��¼�NVO_UE_SETUP,����CONSTRUCTOR
�����
    �����:
    �������µľֲ��ⲿ����:
    FUNCTION uint GetFreeSystemResources(uint SysResource) L
IBRARY 'user.dll'
    ������:
    �������±���ʵ��:
    Private:
    /*��С����Դ����*/
    Long  il_usermem_limit
    Long  il_gdimem_limit
    Long  il_memory_limit
    Long  il_standard_threshhold
    /*��Դ���ʳ���*/
    Integer
     sdkUser=0,sdkGDI=1,sdkMemory=2
    ������:
    �������µ��û�������:
    //**************************
    //����: NVOF_Check_Resources
    //����: To check system resources
    //����:(��)
    //����ֵ:integer
    //1-�ɹ�,<0-ʧ��(�����ֵΪ��Դ���ʳ���)��
    //*************************
    if GetFreeSystemResources(sdkUser) < il_usermem_limit th
en
     return(sdkUser*-1)
    end if
    if GetFreeSystemResources(sdkGDI) < il_gdimem_limit then
     return(sdkGDI*-1)
    end if
    if GetFreeSystemResources(sdkMemory) < il_memory_limit t
hen
     return(sdkMemory*-1)
    end if
    Return  1
    ������:
    ������Ҫ����һ���������ڽ������ǵ���С��Դ���ơ�
    ��������NVOF_Set_Resource_Limit��������������ͱ���ai_Re
sourceType,��ָ�������Դ����������(GDI,User�� Memory)��ai_t
hreshhold,ָ��������Դ���͵��ٽ�����ֵ��
    //**************
    //����: NVOF_Set_Resource_Limit
    //����: Sets resource threshhold limits
    //����:   integer   ai_ResourceType
    //(ָ�������Դ��������)
    //integer   ai_Threshhold
    //(������Դ���͵��ٽ�����ֵ)
    //����ֵ:integer
    //1-�ɹ�,-1-ʧ��.
    ////*****************
    /*������Դ����*/
    Choose Case ai_ResourceType
     Case sdkGDI
      il_gdimem_limit=ai_Threshhold
     Case sdkUser
      il_usermem_limit=ai_Threshhold
     Case sdkMemory
      il_memory_limit=ai_Threshhold
    End Choose
    Return  1
    ������:
    �������¼���,��il_Default_Threshold��Ϊ�Դ�һЩ����ֵ��
����,30%���������ܽ��ܵ���͵IJ��þ����û�����Դ��,��ô����
�������¼���д�����´���:
    il_Default_Threshold=30
    �ڳ�ʼ���¼���,����ȱʡ�������趨�ٽ�����,�������������
ʱ������Щ���ơ���������н�������ø�һ��,����ȷ��������
Ʒ����ʱ��Դ��������⡣
    NVOF_Set_Resource_Limit(sdkUser,il_Default_Threshold)
    NVOF_Set_Resource_Limit(sdkGDI,il_Default_Threshold)
    NVOF_Set_Resource_Limit(sdkMemory,il_Default_Threshold) 
    ��
    �������������һ��ʵ��,�ڴ�һ�����ڡ���̬��һ���û�
����򴴽�һ������֮ǰ,ͨ����ö����NVOF_Check_Resources()
����,�����ȷ���Ƿ����㹻����Դ����������򿪡���Щ����Ҳ
������Ӧ�õ��κεط��������������ƻ�����Դ��

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3O9R4M$tzB@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,1b9f03c9e44c025c,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: ��Դ����
Date: 1998/04/18
Message-ID: <3O9R4M$tzB@bbs.nju.edu.cn>
X-Deja-AN: 345322571
X-Filename: Programming/M.892871638.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program