Почему происходит утечка памяти при использовании API хранилища данных на сервере разработки (не тестировалось на производстве)? - PullRequest
1 голос
/ 13 января 2012

Не могли бы, ребята, помочь мне найти причину утечки памяти?Это сводит меня с ума: (((*

Я использую GAE SDK 1.6.1. Я создал пример проекта с одним сервлетом, который содержит следующий метод doGet

protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException
{
    {
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

        System.out.println();
        for (long i = 1; i <= 10000000; ++i)
        {
            Entity entity = new Entity("Visitor");
            entity.setProperty("name", "Name is " + i);
            entity.setProperty("value", "Value is " + i);
            Key key = datastore.put(entity);
            System.out.println(key.getId());
        }
    }
}

Сбой при вызове этого сервлетас исключением OutOfMemory, потому что все временные объекты хранилища данных остаются в памяти.

Вот дерево входящих ссылок на удерживаемый объект, полученный с помощью YourKit Java Profiler.

enter image description here

ДелаетКто-нибудь знает, почему? Как я могу избежать этого? Это ошибка, связанная с GAE, или что-то в моей среде разработки?

Спасибо !!!

1 Ответ

0 голосов
/ 13 января 2012

Я только что нашел этот поток, в котором Икай Лан (Google) говорит "Заглушка хранилища данных сервера разработки находится в карте памяти, которая сохраняется на диске".

Возможно, это ответит на мой вопрос.

...