Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2282 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Boa tarde Pessoal

Estou tendo problema de "out off memory" e pelo que constatei é por causa do metodo Consultar(''); do ACBreSocial.

Criei um exemplo simples e constatei que mesmo destruindo o componente o executável aumentando na memória, acredito ser alguma dlls de assinatura. 

segue exemplo:

 

unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ACBreSocial, pcesConversaoeSocial, pcnConversao, ACBrDFeSSL;

type
  TForm4 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    function configACBR(AComponente: TACBreSocial): Boolean;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation
var
  continua: boolean;

{$R *.dfm}

procedure TForm4.Button2Click(Sender: TObject);
begin
  continua := false;
end;

function TForm4.configACBR(AComponente: TACBreSocial): Boolean;
var
  sDir : string;
begin
  result := false;
  AComponente.Configuracoes.Geral.VersaoDF := ve02_04_02;
  sDir := Application.ExeName;
  if (sDir<>'') then
  begin
    AComponente.Configuracoes.Arquivos.PathSchemas := sDir;
    AComponente.Configuracoes.Arquivos.Salvar := False;
    AComponente.Configuracoes.Arquivos.SepararPorCNPJ := True;
    AComponente.Configuracoes.Geral.Salvar := false;
    AComponente.Configuracoes.WebServices.Salvar  := false;
    AComponente.Configuracoes.Geral.FormaEmissao := teNormal;
    AComponente.Configuracoes.WebServices.Ambiente := taHomologacao;
    AComponente.Configuracoes.WebServices.UF := 'SP';
    AComponente.Configuracoes.Certificados.VerificarValidade := True;
    AComponente.Configuracoes.WebServices.AguardarConsultaRet      := 5000;
    AComponente.Configuracoes.WebServices.IntervaloTentativas      := 3000;
    AComponente.Configuracoes.WebServices.Tentativas               := 10;
    AComponente.Configuracoes.WebServices.AjustaAguardaConsultaRet := True;
    AComponente.Configuracoes.WebServices.Visualizar := false;
    AComponente.Configuracoes.Geral.SSLLib := libCustom;
    AComponente.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
    AComponente.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
    AComponente.Configuracoes.Geral.SSLXmlSignLib := xsLibXml2;
    AComponente.Configuracoes.Certificados.ArquivoPFX := 'arquivoA1.pfx';
    AComponente.Configuracoes.Certificados.NumeroSerie := '';
    AComponente.Configuracoes.Certificados.Senha := 'senha';
    AComponente.Configuracoes.Geral.IdTransmissor := '';
    AComponente.Configuracoes.Geral.IdEmpregador :=  '';
    result := true;
  end;
end;


procedure TForm4.Button1Click(Sender: TObject);
var
  a:TACBreSocial;
begin
  continua := true;
  while continua do
  begin
    try
      a := TACBreSocial.Create(Application);
       configACBR(a);
      a.Consultar('1.2.201808.0000000000018726690');
    finally
      a.free;
    end;
    Sleep(100);
    Application.ProcessMessages;
  end;
  showmessage('parou!');
end;

end.

 

Se alguém puder me dar um luz agradeço.

 

 

 

Editado por Jonathan Fabricio Seibel
Postado

Então Joceandro pelos testes que fiz o componente esta destruindo tudo certinho.

Pelo menos habilitando o ReportMemoryLeaksOnShutdown := true;

Nada consta, acredito ser alguma "dll" mesmo :((

Postado

Bom dia Jonathan,

Sim, possivelmente seja mesmo, aconteceu aqui hoje em um cliente, estava enviado em torno de 4 mil eventos, aí chega um hora que da "out off memory", aí tem que fechar a aplicação e abrir novamente..

Postado

Bom dia, Joceandro!

Não sei o tipo de conexão e sua aplicação se for BDE, pode ocorrer esta msg:

// Seu Problema e o Paradoxusrs.lck que esta crescendo para isso coloca no OnCreate do Form principal essa linha ok:
// Faz com que o PdoxUsrs.Lck nao Cresca

  Session.PrivateDir := ExtractFilePath(ParamStr(0));

 

Ok.

Postado

Não é BDE não eu por exemplo utilizo o Firebird com IBO.

O problema é vazamento de memoria mesmo em alguma dll de assinatura! 

Então resolvi o problema de forma paliativa: 

Criei um auto terminal que envia os eventos gerados, e de tempo em tempo ele fecha e abre sozinho.

Postado
1 hora atrás, oprata disse:

Bom dia, Joceandro!

Não sei o tipo de conexão e sua aplicação se for BDE, pode ocorrer esta msg:

// Seu Problema e o Paradoxusrs.lck que esta crescendo para isso coloca no OnCreate do Form principal essa linha ok:
// Faz com que o PdoxUsrs.Lck nao Cresca

  Session.PrivateDir := ExtractFilePath(ParamStr(0));

 

Ok.

Obrigado pela sugestão, mas também não é meu caso.. Acredito que seja mesmo alguma dll...

O problema que eu não consigo debugar aqui pra tentar achar onde e quando acontece isso, pois o ambiente de homologação ultimamente está muito lento..

  • Este tópico foi criado há 2282 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.