Понял это с помощью jdbcPagingItemReader. Основная причина, по которой устройство чтения курсоров потребляет огромную память, заключается в том, что он просто считывает все данные в память, а затем обрабатывает их, что будет рассматриваться JVM как большой объект, и он будет непосредственно размещен в старом поколении, пока весь процесс закончен, его невозможно собрать.
4-байтовые границы на x86. Возможно 8-байтовые границы на x64.
Существует 8 байтов наверху на x86 для ссылки типа и синхронизирующего блока. Я не был бы удивлен найти, что это составляет 12 или 16 байтов на x64.
По некоторым причинам, на x86 экземпляр просто System.Object
кажется, берет 12 байтов, делая 12 байтов абсолютным минимальным размером возможный - но класс с int
также берет 12 байтов. Я понятия не имею почему дело обстоит так.
Зависит от машины, от машины на 32 бита это обычно - 4 байта. Однако на поле на 64 бита, это - 8 байтов и так далее.