perdido_e_sozinho Posted August 16, 2005 at 10:01 AM Report Share #3034 Posted August 16, 2005 at 10:01 AM Já repararam quanto é que uma form de VB.NET ocupa em memória? Link to comment Share on other sites More sharing options...
AriOps Posted August 16, 2005 at 11:51 AM Report Share #3038 Posted August 16, 2005 at 11:51 AM pelo menos a que estou a fazer agora tá a ocupar-me prai 10 megas sem exagero... Daniel Correia Link to comment Share on other sites More sharing options...
perdido_e_sozinho Posted August 16, 2005 at 11:52 AM Author Report Share #3039 Posted August 16, 2005 at 11:52 AM Minimiza a form e volta a maximizar! Com quanto ficas? Link to comment Share on other sites More sharing options...
AriOps Posted August 16, 2005 at 11:54 AM Report Share #3040 Posted August 16, 2005 at 11:54 AM pera tenho de iniciar outra vez, já edito este post edit: No começo afinal é 21.512 Megas Depois de minimizar e maximizar é 3.704??? Daniel Correia Link to comment Share on other sites More sharing options...
satanuke Posted August 16, 2005 at 12:10 PM Report Share #3043 Posted August 16, 2005 at 12:10 PM :shock: tek.readers blog Link to comment Share on other sites More sharing options...
perdido_e_sozinho Posted August 16, 2005 at 12:18 PM Author Report Share #3044 Posted August 16, 2005 at 12:18 PM No Visual Basic .NET ao contrário do VB6 temos que limpar a memória. Para isso usa-se o Garbage Colector. Quantos mais objectos a form tiver, mais forms se abrir e mais se usar mais incha. Se repararem o Visual Studio tb incha, chega a atingir 400MB, pois isso vou minimizando de vez em quando. 🙂 Para um uso correcto da memória deve-se limpar uma variável sempre que já não é necessária. Exemplo: Dim frm as new form frm.show '== Isto limpa a variável == frm.dispose frm=nothing Para limpar a memória usa-se o GC ou Garbage Colector. No xp não há problema da aplicação inchar, uma vez que a memória também incha, mas no 98 isso é problemático. Aqui fica um truque muito útil e que resolve este problema. Criem um Modulo a coloquem este código Private Declare Function SetProcessWorkingSetSize Lib "kernel32.dll" ( _ ByVal hProcess As IntPtr, _ ByVal dwMinimumWorkingSetSize As Int32, _ ByVal dwMaximumWorkingSetSize As Int32 _ ) As Int32 Public Function SaveMemory() As Int32 Return _ SetProcessWorkingSetSize( _ Diagnostics.Process.GetCurrentProcess.Handle, _ -1, _ -1 _ ) End Function Em seguida no fim de cada sub coloquem SaveMemory() ou criem um timer que de x em x segundos limpe a memória. As aplicações passam a usar entre 800 k e 5 MB contra os habituais 20MB - 200MB Antes de descobrir este truque eu cheguei a ponderar refazer um programa em VB6 pois o programa em VB.NET rebentava em Windows98. Mas após usar isto o problema foi resolvido a passei a não me preocupar com a memória no Windows nas Aplicações VB. É seguro e simples, o que querem de melhor? 😄😄😄😄 Com os melhores cumprimentos, Sérgio Matias Link to comment Share on other sites More sharing options...
David Pintassilgo Posted August 16, 2005 at 06:25 PM Report Share #3071 Posted August 16, 2005 at 06:25 PM Muito Boa Dica sim senhor! ;) cool stuffs to check. http://blog.zxcoders.com// Link to comment Share on other sites More sharing options...
Asgorath Posted November 23, 2005 at 02:55 PM Report Share #7198 Posted November 23, 2005 at 02:55 PM Sergio, chamar SetProcessWorkingSetSize forca parte da memoria allocada pela tua aplicacao a ser escrita para o disco o que afecta a performance de maneira negativa. No winXp, win2000, e superior deixa o GC fazer o seu trabalho e não se preocupem com a memoria afixada pelo task manager que não é preciso. Atentamente Jorge "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
perdido_e_sozinho Posted November 23, 2005 at 06:22 PM Author Report Share #7209 Posted November 23, 2005 at 06:22 PM Segundo o que me indicaram já à algum tempo este método simula o que acontece quando a aplicação é minimizada, no diz respeito à memória. Em alguns casos que me já conteceram tive problemas com a gestão de memória do GC, não em XP ou 2000, mas em 98, visto que este não eliminava alguns residuos de memória. Posso estar enganado mas este método permite remover alguma memória residual, visto que se a aplicação por exemplo num dado momento está a usar 120 MB após este processo passa a usar por exemplo 2MB, e quando é chamado um novo procedimento passa por exemplo a 20 MB. Já me aconteceu com uma aplicação que lida com 3000 registos com muito informação ao mesmo tempo acumular mais de 500MB de memória, e o computador não efectuar uma gestão correcta da memória. (De facto acho que continua a ser um grande problema do .net 2005, pois o IDE do VB 2005 Express chega a carregar-me 700MB de memória, que não visíveis em processo nenhum.) De facto posso estar a menospresar o GC, mas não existe muita informação na internet sobre a melhor maneira de o utilizar. Talvez se me demonstrar como o posso usar de forma mais correcta e realmente eficaz eu deixe de utilizar este método, que confesso é muito pouco ortodoxo, mas como sei não é necessáriamente o mais correcto ou eficaz. Espero então que me possa ajudar a ganhar mais e melhores conhecimentos. Com os melhores cumprimentos, Sérgio Matias Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now