В большинстве ЯП поддерживается чтение некоторого количества байт с определённого места из файла.
Т.е. можно открыть файл (не считать его весь, а только открыть), после этого в цикле читать по N байт и итерировать по ним. Дальше уже дело за алгоритмом, который принимает по одному символу и пытается в потоке символов вычислить палиндром. Т.е. это машина состояний. Думаю там нужен стэк ограниченного размера с выталкиванием самых старых символов при поступлении новых.
// псевдокод
file = open("my_big_file.txt","r");
buffer = byte[1024];
palindrome_scanner = new PalindromeScanner(4, 64); // min and max palindrome size
while(canRead($file)){
buffer = fread(file, &buffer);
for(int i=0; i<2024; i++){
palindrome_scanner->next(buffer[i]);
}
}