Я очень новичок в Spring Batch. Мне нужно разработать весеннее пакетное приложение, которое считывает 1,00,000 записей из файла csv. Я разработал одно весеннее пакетное приложение, как показано ниже.создание весеннего пакетного объекта
<job id="hellojob" xmlns="http://www.springframework.org/schema/batch">
<step id="orderprocessor">
<tasklet allow-start-if-complete="true">
<chunk reader="reader" writer="writer" commit-interval="500" skip-limit="2">
<skippable-exception-classes>
<include class="org.springframework.batch.item.file.FlatFileParseException" />
</skippable-exception-classes>
</chunk>
</tasklet>
</step>
</job>
Также я имею поле класса набор картографа, как
public class OrderDataMapper implements FieldSetMapper<Product> {
@Override
public Order mapFieldSet(FieldSet fieldSet) throws BindException {
Product product = new Product();
order.setCustId(fieldSet.readString(0));
order.setOrderNum(fieldSet.readString(1));
order.setCountry(fieldSet.readString(2));
return product;
}
}
согласно моему пониманию, указанное поле класса набор картографа вызывается для каждой записи, и каждый раз, когда он создает один новый объект. Таким образом, для 1,00,000 записей будет создано 1 000 000 объектов.
Я считаю, что это большое количество объектов для обработки jvm и недоступны для сбора мусора, поскольку все работает на одном нить.
Пожалуйста, дайте мне знать, Есть ли способ, где я могу создать меньшее количество объектов, в то время как итерацию 1.00.000 записи
Максимальное количество объектов на кусок указано в интервале фиксации; после того, как каждый кусок фиксирует 500 созданных объектов, доступных для сбора мусора. Я не понимаю вашего утверждения о GC: сборщик мусора - как я знаю - работает в выделенном потоке демона, отличном от прикладного потока –