Napriklad v aplikaci BT File Manager nebo MiniCommander je nekdy problem s ukladanim na kartu - odvolavaji se na nedostatek mista i prestoze je mista dost. Co s tim?
Zkoumanim jsem dosel k tomu, ze pujde asi o
Integer overflow - proste se nepocitalo s velkym mnozstvim volneho mista. Sedi to na 2
GiB, protoze java nema unsigned integery.
Co tedy s tim?
Na nesmyslnou hlasku o nedostatku pameti by melo pomoct jeji zaplneni! Zni to paradoxne, ale ma to logicke opodstatneni a fungovalo mi to! Mam 4GB kartu a dokud jsem mel nad 2
GiB volneho mista, byl problem. Jakmile jsem zaplnil dostatek pameti, zacalo to byt OK.
A jak to podle moji teorie vypada s pameti nad 4
GiB? Rozeberu to tu od zacatku, jak to asi bude celkove vypadat. Melo by to stejne platit i pro karty mensi (s tim rozdilem, ze je mozne dosahnout mene volneho mista):
* Pod 2
GiB volneho mista to je videt spravne.
* Od 2
GiB (vcetne) do 4
GiB (bez) skutecneho volneho mista je videt zaporne volne misto.
* pro 4
GiB je videt volne misto 0B a dal roste normalne (napr. 4.2
GiB je videt jako 0.2
GiB.)
* Jakmile volne misto dosahne 6
GiB, je viditelne misto zase zaporne a vpodstate se to dal opakuje.
Viditelne volne misto je tedy periodicka funkce s periodou 4
GiB. Jeji minimum je -2
GiB a maximum je 2
GiB-1B a v ramci periody jde o linearni rostouci funkci.