Если вам просто хотелось бы узнать, сколько памяти используется в вашей JVM и сколько бесплатно, вы можете попробовать что-то вроде этого:
// Get current size of heap in bytes
long heapSize = Runtime.getRuntime().totalMemory();
// Get maximum size of heap in bytes. The heap cannot grow beyond this size.
// Any attempt will result in an OutOfMemoryException.
long heapMaxSize = Runtime.getRuntime().maxMemory();
// Get amount of free memory within the heap in bytes. This size will increase
// after garbage collection and decrease as new objects are created.
long heapFreeSize = Runtime.getRuntime().freeMemory();
edit: Я думал, что это может быть полезно, поскольку автор вопроса также заявил, что хотел бы иметь логику, которая обрабатывает «чтение как можно большего количества строк, пока я не использовал 32 МБ памяти».
Вы можете сделать это следующим образом -
Из отметки времени
select DATE_PART_YEAR('2019-01-15 04:47:22');
date_part_year
-----------
2019
(1 row)
С даты
select DATE_PART_YEAR('2019-01-15');
date_part_year
-----------
2019
(1 row)
[1111 ] Но если взглянуть на ваши примеры данных, можно легко понять, что ваши данные представлены в текстовом формате, а не в формате даты, следовательно, они должны быть casted first to the date
, тогда можно использовать DATE_PART_FUNCTION
.
select DATE_PART_YEAR(to_date('10-Nov-15','DD-Mon-YY'));
Здесь to_date
функция преобразует text
в date
, а затем извлекает год. Надеюсь, что это отвечает на ваш вопрос.