Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Програма ест память, растет в памяти без видимой причины 
:(
    Опции темы
zhail
Дата 18.12.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.12.2008

Репутация: нет
Всего: нет



Доброе время суток.

У меня такая проблема:

есть прога, которая конектится к БД через JDBC. Выглядит это так: находим в таблице строку, два раза кликаем - открывается окно JDialog с подробной информацией по выбранному объекту интерфейс написан на Swing.

И получается такая штука: открыли объект в окне, закрыли открыли следующий, следующий, .... , и при этом программа при каждом открытии занимает на полтора метра больше, ну и понятно, если при старте ей нужно 25М то после нескольких десятков открытий - кричит что памяти не хватает.

С чего лучше начать искать? Что проверить? 
А то перезапускать прогу через 20-30 мин :(
PM MAIL   Вверх
SaSho
Дата 19.12.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.6.2007
Где: Днепропетровск

Репутация: 1
Всего: 3



Доброе.
Профилировать, видимо, не пробовали.
"Пальцем в небо" можно предположить следующее: при открытии каждого окна JDialog создаётся новый диалог, а при закрытии память не очищается (не установлено setDefaultCloseOperation(DISPOSE_ON_CLOSE)); открытие коннекта к БД - ресурсоёмкая операция, пул используется?
PM MAIL ICQ Jabber   Вверх
zhail
Дата 19.12.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.12.2008

Репутация: нет
Всего: нет



Цитата(SaSho @ 19.12.2008,  10:01)
"Пальцем в небо" можно предположить следующее: при открытии каждого окна JDialog создаётся новый диалог, а при закрытии память не очищается (не установлено setDefaultCloseOperation(DISPOSE_ON_CLOSE))

Попробовал - помогло :) 
я думал, что вызова myJDialog.dispose() хватит.

Теперь программа растет не на 1,5мб в памяти, а на 300кб.

Попробую плз еще раз пальцем в небо :)

Про конект к БД, деляю так:
Код

public class DB {
    private java.sql.ResultSet resultSet;

    private java.sql.Statement statement;

    private java.sql.Connection connection;
        public boolean connect(String uName, String userPass) {
        userName = uName;
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            String url = "jdbc:mysql://192.168.10.2/myDB";

            try {
                connection = DriverManager.getConnection(url, userName,
                        userPass);
                java.sql.ResultSet rsid = select("SELECT idemployee FROM employee WHERE associateName = '"+userName+"'");
                rsid.next();
                userid = rsid.getInt("idemployee");
                System.out.println("id="+userid);
                return true;
            } catch (SQLException e) {
                e.printStackTrace();
                return false;
            }

        } catch (ClassNotFoundException e1) {
            JOptionPane.showMessageDialog(new JFrame(), "Имя пользователя или пароль не приняты" ,"Ошибка", JOptionPane.ERROR_MESSAGE);
            e1.printStackTrace();
            return false;
        }
    }

        public java.sql.ResultSet select(String qery) {
        try {
            String qer = qery;
            System.out.println(qer);
            statement = connection.createStatement();
            resultSet = statement.executeQuery(qer);
            return resultSet;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
...
}

PM MAIL   Вверх
SaSho
Дата 22.12.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 10.6.2007
Где: Днепропетровск

Репутация: 1
Всего: 3



Пули соединений используй. Например, DBCP
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1201 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.