Witam.
Mam problem z poprawą kawałka kodu.
Poniżej dwie funkcje, jedna wczytuje slownik z słowami danymi z pliku (sa to slowa jezyka polskiego, w pliku teksotym,jedno po drugim).
Drugi sprawdza dostepna pamiec.

Mam wymaganie ze pamiec na program to 70MB inaczej program sie wywali.
Ponizsze wcyztywnie wczyta tylko litery a A i braknie mu pamieci. Chche przerobic to tak aby wczytał słowa np. 3literowe.
Niestty nie działa to tak jak powinno - przez CASE ani IF. Nadal pamiec sie zapełnia pomimo ze w slowniku laduja tylko slowa 3 literowe - w efekcie tylko slowa 3 literowe na A. Nie moge zrozumiec dlaczego tak to dziala i jak to poprawic - dlaczego zapelnia pamiec skoro wybieram tylko słowa 3 literowe. W ponizszym przykladnie wczyta prawie wszyskie slowa na A - tylko nie potrzebuje takich dlugich słów.

 //======================wczytywanie slownika =================================
	
	public void LoadDictionary()
	{
		File file = null;
		Scanner reader = null;

		try
		{
			// otwarcie pliku
			file = new File("slowa.txt");
			reader = new Scanner(file);
			String line = null;
			
			line = reader.nextLine();
			
			// jezeli brak slow w pliku, rzuc wyjatek
			if (line == null)
				throw new Exception("Pusty slownik!");
			
			// wczytuj kolejne slowa z pliku
			while (line != null)
			{
				//if (line.length() == 3) dictionary.add(line.toUpperCase());
					
				dictionary.add(line.toUpperCase());
					
				// jezeli zblizamy sie do limitu pamieci, przerwij wczytywanie
				if (DictionarySize() > 60)
					line = null;
				else
					line = reader.nextLine();

			}
		}
		catch (Exception e)
		{
			System.err.println(e);
		}
		finally
		{
			reader.close();
			
			
		}
	}
	
 public long DictionarySize()
	{
		
		MemoryMXBean memory = ManagementFactory.getMemoryMXBean();
		long heapSize = memory.getHeapMemoryUsage().getUsed();
		
		heapSize = heapSize / 1048576;
		//System.out.println(heapSize);
		
		return heapSize;
	}