Anonymní profil jerry – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil jerry – Programujte.comAnonymní profil jerry – Programujte.com

 

Příspěvky odeslané z IP adresy 2a00:1028:83be:235a:b8e7:e6bf:5399:4417...–

jerry
.NET › OutOfMemory v GUI v 32bit
30. 1. 2019   #382953

#23 Mutagen
500MB soubor se ti do paměti pod Win7x32 v pohodě vejde. Nacpeš ho do MemorySteramu. V tom bych problém neviděl...

ale pochop, že věta:

".......mám jeden BinaryWriter(memorystream) a postupně ty bitmapy napisuju do binarywriteru ... kde na konci zípisu jednotlivé bitmapy vyprázdním bitmapu .........."

nedává smysl. :) Ani technologicky ani logicky. Data ze souboru mužeš do objektu Bitmap/Image přenést v paměti až když to potřebuješ. A to tak, že udržuješ jen JEDNEN objekt Bitmap. Když něco načteš a na konci čtení to zase zapíšeš a vynuluješ pamět tak to znamená že s tim nic neděláš :))) Hele tohle jsou principy stejné ve všech programovacích jazycích. BinaryWriter/BinaryReader měl už TurboBasic z roku 1989. Pochop, že tady se nemuší stydět. My tě nevidíme, ale snažíme se ti pomoct....... ... njn .. tak třeba za rok ....

jerry
.NET › OutOfMemory v GUI v 32bit
30. 1. 2019   #382945

#20 Mutagen
Ponechávat otevřený soubor je jedna ze základních chyb začátečníků. Soubor by se měl pokaždé uzavřít, když čtení z něj se přerušuje na delší dobu jiným algoritmem. Tyhle pravidla platí už od 80. let. Existuje přeci funkce seek ne ? Jde o to, že poměrně často sem někdo píše žádost o info, ale nedává úplné informace. Naposled to byl nějakej kluk co dělal zobrazování bójí na moři. Trvalo mu rok než vubec vysvětlil co chce a než přišel na to jak se to dělá. Když načítáš najednou 350MB soubor do paměti tak se to dělá tak, že nejdřív paměť alokuješ a zjistíš, jestli se tam soubor vejde. A teprve pak do přiděleného úseku data načteš. Zapsáním do souboru se soubor nezavře. Na to potřebuješ funkci Close(). Pokud ji nezavoláš, tak poslední data se nezapíší !!!. S tim souborem v paměti se obvykle něco dělá. Pokud je to obrázek, tak se třeba nějak transformuje apod. Ty si hlavně hledal proč ti nejde do paměti načíst 5GB soubor když si pod x32 Windows. No to dost dobře není možné, protože jsou tu ty limity 2GB. Je však možné soubor rozdělit po 2GB částech což se běžně dělalo u střihových karet v řívější době když ještě nebyl x64 procesor. Konverze programu, který byl napsaný pro x64 platformu na x32 je blbost a nikdo to nedělá. Tohle se ošetřuje už při programování projektu. Proto se např. Inventor 2018 už nedělá ve verzi x32 protože to bylo moc náročné na udržování a finance pro AutoDesk atd....

jerry
.NET › OutOfMemory v GUI v 32bit
30. 1. 2019   #382943

#18 Mutagen
jak to muže neskutečně zpomalit zápis když se stejně nezapisuje celých 350MB najednou ????

to je prostě ta mladá generace ... vysoký sebevědomí a piliny v hlavě

jerry
.NET › OutOfMemory v GUI v 32bit
30. 1. 2019   #382939

#13 Mutagen
jestli opravdu potřebuješ ukládat obrovský množství dat až na úroveň 2GB v x32, použij RAMDisk a ukládej to do něj. Je to stejně rychlý jako klasická RAM. Můžeš použít paměť grafický karty třeba 24GB DDR5 a AMD Radeon RAM Disk http://www.radeonramdisk.com/software_downloads.php  ... 

jerry
.NET › OutOfMemory v GUI v 32bit
30. 1. 2019   #382938

#13 Mutagen
pokud použiješ MemoryStream tak 500MB bez problémů uložíš do paměti i v x32 systému. A z něj pak mužeš zapisovat do souboru po 64KB blocích.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý