SetArray - лучшее решение, но оно недоступно для многих старых драйверов. Следующий способ обхода может быть использован в java8
String baseQuery ="SELECT my_column FROM my_table where search_column IN (%s)"
String markersString = inputArray.stream().map(e -> "?").collect(joining(","));
String sqlQuery = String.format(baseSQL, markersString);
//Now create Prepared Statement and use loop to Set entries
int index=1;
for (String input : inputArray) {
preparedStatement.setString(index++, input);
}
. Это решение лучше, чем другие уродливые решения для цикла, где строка запроса построена с помощью ручных итераций
«Предел мягкой частной памяти» - это предел памяти, при котором App Engine остановит экземпляр от получения большего количества запросов, дождитесь появления каких-либо невыполненных запросов и прекратит экземпляр. Подумайте об этом как о грациозном отключении, когда вы используете слишком много памяти.
Время от времени нажимать на мягкий лимит - нормально, так как все ваши запросы заканчиваются так, как должны. Однако каждый раз, когда это происходит, ваш следующий запрос может запустить новый экземпляр, который может иметь латентное воздействие.
Предполагаю, что вы используете внешний интерфейс внешнего интерфейса или бэкэнд. (Класс F1 или B1) Оба имеют квоту памяти 128 МБ, поэтому ваше приложение, скорее всего, преодолело этот лимит квоты. Тем не менее, эта квота, как представляется, не строго соблюдается, и Google имеет некоторую снисходительность к этому (таким образом, термин soft limit
), у меня было несколько экземпляров приложения F1, потребляющих ~ 200 МБ памяти за несколько минут до того, как они были завершены приложением Engine.
Попробуйте увеличить класс экземпляра до следующего класса более высокого уровня (F2 или B2), который имеет квоту на 256 МБ памяти и посмотреть, не произойдет ли повторная ошибка. Кроме того, изучите, воспроизводится ли ошибка при каждом отправке электронной почты с помощью вложений. Поскольку возможно, что то, что вы видите, является симптомом, но не причиной, а часть вашего приложения, которая потребляет много памяти, находится где-то в другом месте.
AFAIK, the process was allowed to finish its last request before being terminated. – Ibrahim Arief Feb 17 '12 at 23:15
означает ли это в этом случае, письмо, вероятно, было успешно отправлено? Может быть, пользователь user714852 мог бы ответить?
– The Red Pea
18 October 2015 в 19:46