.NET Framework, zarządzanie pamięcią
Wersja A
Słownik słów pobieranych z pliku (aplikacja konsolowa).
-
Działanie programu:
-
pobrać nazwę pliku podaną jako parametr wywołania programu
-
w pętli pobierać tekst od użytkownika
-
jeśli tekst rozpoczyna się zerem, zakończyć działanie programu
-
jeśli tekst rozpoczyna się wykrzyknikiem, spowodować zwolnienie pamięci
dostępnej do zwolnienia
-
w przeciwnym przypadku znaleźć w słowniku wszystkie słowa zaczynające się
podanym tekstem
-
wyświetlić ile znalezniono wszystkich słów i ile unikalnych
-
jeśli znalezionych unikalnych słów jest mniej niż 10, wyświetlić je
-
uwaga: jako słowo traktować wszystkie znaki do następnej spacji, czyli włącznie
ze znakami interpunkcyjnymi
-
po każdej komendzie użytkownika wyświetlać ilość zajętej pamięci
i pierwsze litery wyrazów dostępnych bez konieczności wczytywania z pliku
-
Szczegóły implementacji:
-
nie wczytywać do pamięci wszystkich wyrazów, zawsze tylko wyrazy rozpoczynające
się od litery rozpoczynającej wyraz podany przez użytkownika
-
wielkość pierwszej litery nie ma znaczenia
-
wczytane wyrazy trzymać w strukturach pamiętanych jako słabe referencje i w
razie zwolnienia ponownie wczytywać z pliku
-
w klasie reprezentującej cały słownik wykorzystać indexer indeksowany
początkową literą wyrazów, który da dostęp do wszystkich wyrazów
rozpoczynających się na podaną literę
-
Sugestie:
-
StreamReader, WeakReference, GC
-
Przykładowe działanie programu
a
Reading letter A ... done.
found: 19352 (1011):
Memory: 2231096 Available letters: A
acc
found: 4 (2):
accesses
accessibility
Memory: 2231096 Available letters: A
doc
Reading letter D ... done.
found: 4 (3):
docs.BC3EE373_B952_4841_B3FD_E4AD14F4D3A8
docs.BC3EE373_B952_4841_B3FD_E4AD14F4D3A8;
documents
Memory: 3259816 Available letters: A D
ac
found: 355 (8):
accesses
accessibility
acl5016_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8;
acl5016_dll_JLCA_____X86.3643236F_FC70_11D3_A536_0090278A1BB8;
action
action:
action:,RollbackTemplate=,CleanupAction=RollbackCleanup,CleanupDescription=Remov
ing
actions
Memory: 3259816 Available letters: A D
begin
Reading letter B ... done.
found: 1 (1):
beginning
Memory: 1230492 Available letters: B
acc
Reading letter A ... done.
found: 4 (2):
accesses
accessibility
Memory: 2210356 Available letters: A
!
Memory: 282864 Available letters: