Возможно ли переполнение памяти
Есть следующий код программы. Он считает количество уникальных слов на странице. Могут ли тут быть ситуации переполнения памяти(кроме переполнения int)? Если да, то как их решить?
public static void main(String[] args) {
Document doc = null;
try {
doc = Jsoup.connect("https://en.wikipedia.org/").get();
} catch (IOException e) {
e.printStackTrace();
}
String newsHeadlines = doc.getAllElements().text()
.replaceAll("[\\.\\,\\?\\!\\:\\;\\#\\%\\&\\^\\*\\(\\)\\_\\{\\}]", "")
.replaceAll("\\[","")
.replaceAll("\\]","")
.replaceAll("[0-9]", "");
List<String> newsList=Arrays.asList(newsHeadlines.split(" "));
Set<String> uniq= new HashSet<String>(newsList);
int count=0;
for(String word : uniq){
System.out.println(word+": "+ Collections.frequency(newsList, word));
count++;
}
System.out.println(count);
}
}
Ответы (1 шт):
Переполнение памяти возможно, как и в любой другой программе, если оперативной памяти будет меньше, чем использует программа. Но в вашем случае это очень маловероятно на современном железе. Сомневаюсь, что страничка в википедии будет настолько огромной, чтобы вызвать переполнение памяти.
Если вы будете выполнять этот фрагмент кода для серии страниц, а не для одной, то просто не храните странички, которые уже проанализировали. Тогда никакого переполнения памяти не будет.
И в случае с переполнением int тоже очень-очень маловероятно, что на странице будет настолько много уникальных слов.