FreeObj [AS]
Autor: Eurai Criado: 01/01/2016 Atualizado: 27/07/2021Descrição
Elimina da memória a instância do objeto informado como parâmetro. |
Sintaxe
FreeObj( |
Parâmetros
Par | Nome | Tipo | Descrição | Default | Obg | Ref |
01 |
oObj | Objeto | Indica o objeto ADVPL a ser eliminado da memória | X |
Retorno
Retorno | Tipo | Descrição |
Exemplo
#INCLUDE "TOTVS.CH" User Function FreeObj() Local oSay01 := TSay():New( 010,005,{|| "UA:" },GetWndDefault(),,,.F.,.F.,.F.,.T.,,,550,008) FreeObj( oSay01 ) Return( Nil )
Resultado
Informações adicionais
A função FreeObj() elimina a instância referenciada pelo objeto informado como parâmetro. Esta função é utilizada para eliminar explicitamente a instância do objeto da memória do server, independentemente de haver outras referências aquela instância do objeto. Ao eliminarmos uma instância de objeto utilizando a função FreeObj(), as variáveis que faziam referência à instância eliminada passam a ter conteúdo nulo ( NIL ). Caso alguma referência ao objeto elimiado seja utilizada, a aplicação AdvPL será finalizada com a ocorrência de erro fatal "Variable is not an object" |
A limpeza de uma instância de uma classe/objeto, na linguagem AdvPL, é realizada normalmente pelo run-time do Kernel do Application Server, quando a variável sai do escopo de processamento e/ou quando a variável é anulada ( oVariavel := NIL ). Porém, caso a instância deste objeto esteja sendo referenciada por mais de uma variável, no momento que uma das variáveis é anulada, é eliminada apenas uma referência, mas a instância do objeto continua ativa, pois ela ainda está sendo referenciada por outra variável. É recomendável o uso da função FreeObj() para objetos de componentes não-visuais, como classes AdvPL e/ou WebServices, uma vez que a determinada instância não será mais utilizada e/ou necessária no processamento, forçando a limpeza da instância do objeto da memória e anulando todas as referências ativas do mesmo |
A utilização da função FreeObj() requer cuidado especial quando utilizada para eliminar da memória um objeto de uma classe visual (Objeto de Interface). Se a função for chamada para eliminar um objeto de interface ainda ativo, o Application Server pode apresentar comportamentos inesperados, como ocorrências de "Exception Access Violation", "Segment Fault" , congelamento do serviço e/ou queda do servidor de aplicação |
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎