DECLARACAO VARIAVEIS E MEMORIA
Bom dia pessoal ..........
nas declarações de variaveis, tem alguma diferença de declaração tipo public ou private, digo isto em termos de memoria, as variaveis publicas consomem memoria mais do que as variaveis privadas????
tenho muitas variaveis pra declarar ......... queria declarar todas num modulo ....... mas só tenho medo de consumir memoria a mais .......... O PROGRAMA LITE E MELHOR .......
nas declarações de variaveis, tem alguma diferença de declaração tipo public ou private, digo isto em termos de memoria, as variaveis publicas consomem memoria mais do que as variaveis privadas????
tenho muitas variaveis pra declarar ......... queria declarar todas num modulo ....... mas só tenho medo de consumir memoria a mais .......... O PROGRAMA LITE E MELHOR .......
Nunca ouvi falar sobre essa situação.
Acredito que não, a diferença sera apenas onde pode ou não acessar a variavel
Acredito que não, a diferença sera apenas onde pode ou não acessar a variavel
NUnca vi em nenhuma literatura sobre ocorrer diferenças no consumo de memória quanto ao tipo da variável ser pública ou privada, mas sim quanto ao tipo de informação que deseja armazenar (exemplo: string, int, double, etc...)
O que muda é o escopo. Mesmo sendo private ou public elas vão ocupar o mesmo espaço com relação ao seu tipo.
Pra ser sincero, não sei como o mecanismo do Vb em run time trata as variáveis Public no inÃcio da aplicação: se a memória é alocada logo de principio no start da aplicação ou se elas são alocadas na primeira chamada e ficam lá até o fim da aplicação.
Pra ser sincero, não sei como o mecanismo do Vb em run time trata as variáveis Public no inÃcio da aplicação: se a memória é alocada logo de principio no start da aplicação ou se elas são alocadas na primeira chamada e ficam lá até o fim da aplicação.
é ............. eu tambem nao tenho conhecimento nisto ........... mas as variaveis string integer double etc, consomem memoria diferenciada ......... a questão e do tipo de private ou public ......
mas muito obrigado .....
mas muito obrigado .....
Private e Public cosomem o mesmo alocamento na memoria sem diferença, porem o tipo de variavel sim consomem memoria diferenciada, se você não declarar o tipo ela assumer Variant que é a que mais pesa na memoria.
Valeuuuuuu .........
MAS MESMO ASSIM EU ACHO Q AS PUBLICs FICAM NA MEMORIA MAIS TEMPO
ex:
no form
a = 100
Se o form for descarregado, as variaveis tbem serão [Ô]despachadas[Ô], não é isso?????
mas se for public ...... elas serão encerradas só ao finalizar o programa ........ entendem???
MAS MESMO ASSIM EU ACHO Q AS PUBLICs FICAM NA MEMORIA MAIS TEMPO
ex:
no form
a = 100
Se o form for descarregado, as variaveis tbem serão [Ô]despachadas[Ô], não é isso?????
mas se for public ...... elas serão encerradas só ao finalizar o programa ........ entendem???
A não ser que vc trabalhe com DLL, sempre que inicia um EXE todas as variáveis contidas nele, públicas ou privadas, são declaradas na memória e o PUBLICO/PRIVADO fica somente para o programa saber o scopo delas.
A única excessão são as variáveis VARIANT e STRING. Uma referência de memória é criada para elas mas como seu conteúdo pode variar de tamanho, esse conteúdo usará memória PÓS declarada, ou seja, quando for atribuido algum valor a ela (exceto as CONTANTS). Note que a referência não varia, só o conteúdo.
O mesmo ocorre quando você carrega uma DLL porém, quando vc dá [Ô]Set X = Nothing[Ô] todas as variáveis (e o próprio programa) é liberado da memória.
Por isso, em sistemas grandes o uso de DLL é muito bom para diminuir o uso de memória
A única excessão são as variáveis VARIANT e STRING. Uma referência de memória é criada para elas mas como seu conteúdo pode variar de tamanho, esse conteúdo usará memória PÓS declarada, ou seja, quando for atribuido algum valor a ela (exceto as CONTANTS). Note que a referência não varia, só o conteúdo.
O mesmo ocorre quando você carrega uma DLL porém, quando vc dá [Ô]Set X = Nothing[Ô] todas as variáveis (e o próprio programa) é liberado da memória.
Por isso, em sistemas grandes o uso de DLL é muito bom para diminuir o uso de memória
Em termos de consumo de memória não há diferença. Os dois tipos se utilizarão sempre do mesmo espaço. Porém, em um programa onde se utilizem muitas variáveis, a média de consumo de memória aumenta consideravelmente qdo vc usa muitas variaveis publicas ou Globais.
A melhor maneira para se reduzir consumo de memória é analisar os tipos de variaveis, ajustando para o melhor tipo que se ajuste a necessidade. V. Relação abaixo...
byte 1 byte
boolean 2 byte
integer 2 byte
long 4 byte
single 4 byte
double 8 byte
currency 8 byte
date 8 byte
object 4 byte
string 10 bytes + o comprimento da String
Observe-se que um valor Boolean (sim/não) se utiliza de 2 bytes .... é muito mais indicado se utilizar da variavel byte (que aceita numeros entre 0 e 255 ) e indicar como 0 e 1 ao invés do Sim/não
ou ainda .... em muitos casos vc pode estar se utilizando deste tipo de variavel para indicar conjuntos finitos.
OBS. IMPORTANTE ... os mesmos valores de consumo são aplicados a campos de bancos de dados... por isso é importante avaliar
criteriosamente o que vamos colocar nos campos...
por ex um campo texto com 50 caracteres (valor default do access) ocupa 60 bytes por registro!
Espero ter esclarecido algo
A melhor maneira para se reduzir consumo de memória é analisar os tipos de variaveis, ajustando para o melhor tipo que se ajuste a necessidade. V. Relação abaixo...
byte 1 byte
boolean 2 byte
integer 2 byte
long 4 byte
single 4 byte
double 8 byte
currency 8 byte
date 8 byte
object 4 byte
string 10 bytes + o comprimento da String
Observe-se que um valor Boolean (sim/não) se utiliza de 2 bytes .... é muito mais indicado se utilizar da variavel byte (que aceita numeros entre 0 e 255 ) e indicar como 0 e 1 ao invés do Sim/não
ou ainda .... em muitos casos vc pode estar se utilizando deste tipo de variavel para indicar conjuntos finitos.
OBS. IMPORTANTE ... os mesmos valores de consumo são aplicados a campos de bancos de dados... por isso é importante avaliar
criteriosamente o que vamos colocar nos campos...
por ex um campo texto com 50 caracteres (valor default do access) ocupa 60 bytes por registro!
Espero ter esclarecido algo
Uma variavel public ou private dentro de um objeto (leia-se classe ou form) so eh enviada para a memoria com sua instanciacao.
Se estamos falando de modulos, eles ficam na memoria ao carregar o programa.
Vale lembrar que o ideal, mesmo em se tratando de VB, eh sempre que possivel programar orientado a objetos, para que cada parte do programa cumpra sua funcao e tambem para que problemas como gerenciamento de memoria nao venham a tona (e se acaso vierem, estejam isolados em um dado objeto dentro da aplicacao)
Se estamos falando de modulos, eles ficam na memoria ao carregar o programa.
Vale lembrar que o ideal, mesmo em se tratando de VB, eh sempre que possivel programar orientado a objetos, para que cada parte do programa cumpra sua funcao e tambem para que problemas como gerenciamento de memoria nao venham a tona (e se acaso vierem, estejam isolados em um dado objeto dentro da aplicacao)
Citação:webmaster disse:
Uma variavel public ou private dentro de um objeto (leia-se classe ou form) so eh enviada para a memoria com sua instanciacao.
Se estamos falando de modulos, eles ficam na memoria ao carregar o programa.
Pra mim está bom demais ................. assunto esgotadoooo
Valeuuuuuuuuu ...
Tópico encerrado , respostas não são mais permitidas