Página 1 de 1

Memory Low

Enviado: 05 Mai 2008 22:36
por ALEX BORELLI
Estou enfrentando problema de Memory Low. Uso Clipper 5.2 e Blinker 7.

Meu Config esta assim:

Código: Selecionar todos

dos=high, umb
device=%SystemRoot%\system32\himem.sys
files=240
buffers=32,0
Meu Autoexec esta assim:

Código: Selecionar todos

REM Instalar as extensoes CD ROM
lh %SystemRoot%\system32\mscdexnt.exe

REM Instalar o redirecionador da rede (carregar antes do dosx.exe)
lh %SystemRoot%\system32\redir

REM Instalar o suporte DPMI
lh %SystemRoot%\system32\dosx

set clipper=f240

Estou tentando usar o indice NSX com a RDD SIX3 e noto que em muitos lugares do sistema o mesmo retorna o erro MEMORY LOW.
Estou link editando com a rotina abaixo descrita:

Código: Selecionar todos

BLINKER OVERLAY FIXED

BLINKER OVERLAY OPSIZE 60

BLINKER INCREMENTAL OFF

BLINKER OVERLAY PAGEFRAME ON

BLINKER OVERLAY THRESHOLD 256
BLINKER CACHE XMS 512, 25%
BLINKER CACHE EMS 128, 50%
BLINKER EXECUTABLE NODELETE

OUTPUT ESTOQUE.EXE

BEGINAREA
FILE ESTOQUE
FILE PSLIB
FILE PSLIB2
FILE PSLIB3
FILE PSLIB4
FILE PSLIB5
FILE PSLIB6
FILE PSLIB7
FILE PSLIB8
FILE PSLIB9
FILE PSLIB10
FILE PSLIB11
FILE PSLIB12
FILE PSLIB13
FILE PSLIB14
FILE PSLIB15
FILE PSLIB19
FILE ESCOLA
FILE FORMAS
FILE NOTAS
FILE COTACAO
FILE AUTOR
FILE EDITORA
FILE COLECAO
FILE PRODUTOS
FILE PSLIB16
FILE APAGAR
FILE FORNECE
FILE arqtext
FILE besc
FILE PSLIB20
FILE KITS

ENDAREA

BEGINAREA

LIB \CLIPPER5\SIX302\LIB\SIX3.LIB

ENDAREA

LIB \CLIPPER5\SOURCE\PE\PE.OBJ
LIB \CLIPPER5\LIB\NANFOR
LIB \CLIPPER5\LIB\OSLIB
LIB \CLIPPER5\LIB\CPMI.LIB
LIB \CLIPPER5\LIB\DIVIDE52.OBJ
LIB \CLIPPER5\LIB\VIEWER.LIB
LIB \CLIPPER5\LIB\RELOGIO
LIB \CLIPPER5\LIB\PCTERROR.OBJ
LIB TIMESLIC.OBJ
Alex Borelli

Re: MEMORY LOW

Enviado: 05 Mai 2008 22:42
por Pablo César
Ja experimentou linkar sem tantas opções, sem tantos BEGIN SEQUENCEs ?. Não sou perito em BLINKER mais sei que quanto mais simples puder deixar seu script de linkedição, melhor será.

Re: MEMORY LOW

Enviado: 05 Mai 2008 23:34
por Maligno
O problema de trabalhar com o modo real é o fato de ter uma memória mais limitada, o que leva à uma maior fragmentação desta, já que o espaço de trabalho é mais limitado, o quê, inclusive, força a ocorrência de um maior número de swaps em disco. Um melhor planejamento na montagem de overlays (BEGINAREA/ENDAREA) até ajuda, mas não faz milagre. Uma vez que o garbage collector do Clipper não funciona corretamente em background, seria necessário pará-lo de vez com a FreeTSlice() e emitir manualmente algumas chamadas Memory(-1) para forçar a coleta de lixo, desfragmentando a memória. Esses procedimentos até poderiam resolver o problema. Não sei se o OP faz isso, mas fazendo ou não, é só um paliativo.

Acho que o ideal seria passar o programa para o modo protegido e aproveitar a memória alta para acabar com esse tipo de problema de uma vez por todas. Se bem que, apesar de ocorrer em menor grau, esse modo também pode apresentar problemas com a fragmentação de memória, podendo ser necessário acionar o garbage collector manualmente por chamadas à Memory(-1). Mas isso depende de vários fatores: tamanho do programa, como é utilizada a memória, etc. Mas no geral, o modo protegido é sempre muito melhor.

Re: MEMORY LOW

Enviado: 06 Mai 2008 18:16
por ALEX BORELLI
Maligno e amigos

Algum poderia me dar uma dica de como seria essa melhor montagem de overlays ou dicas de regras para o mesmo?