Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 889
#1

GC_CONCURRENT и Socet

26.02.2015, 14:45. Просмотров 899. Ответов 4
Метки нет (Все метки)

Здравствуйте товарищи форумчане!

Обращаюсь к Вам по такому вопросу:
Есть код, который обращается к сокету за информацией (в AsynkTask):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                mySock = new Socket("192.168.0.117", 5001);
                out = new PrintWriter(new BufferedWriter( 
                        new OutputStreamWriter(mySock.getOutputStream())), true);
 
                reader = new BufferedReader(new InputStreamReader(mySock.getInputStream()));
 
                out.println(balanses);
                
                int weight;
                int status;
 
                Integer[] rez = new Integer[2];
 
                while (!mIsCancel){
                    weight = Integer.valueOf(reader.readLine());
                    status = Integer.valueOf(reader.readLine());
 
                    rez[0] = weight;
                    rez[1] = status;
 
                    publishProgress(rez);
 
                    out.println(balanses);
                }
Получается сокет открыли, далее крутимся в while и отправляем результаты.

Все вроде бы хорошо, да только смущает через чур частая работа GC (отрабатывает 2 раза в сек.):
Java
1
2
02-26 14:21:20.369: D/dalvikvm(24522): GC_CONCURRENT freed 471K, 10% free 11038K/12215K, paused 2ms+7ms
02-26 14:21:20.951: D/dalvikvm(24522): GC_CONCURRENT freed 485K, 10% free 11032K/12215K, paused 1ms+3ms
Так вот, хотелось бы узнать это нормальное поведение GC в данной ситуации или же необходимо что то менять в этом коде.
Буду благодарен любым разъяснениям по данной теме.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2015, 14:45
Ответы с готовыми решениями:

Delphi работа с Socet ами
Проблема такая - есть два exe файла Первый клиент, второй сервер, между ними я...

Работа с Socet для создания чата на с++
Здравствуйте форумчане, совсем недавно я загорелся желанием создать чат на с++,...

Подскажите тихий куллер на Intel 775 socet
Кучу перепробывал .. подшипники наченают греметь на 2-4 месяц работы...

Проблемы с материнской платой ga-p25-ds4 775 socet.
Вообщем у меня материнка гигабайтовская материнка ga-p25-ds4 775 socet. Год...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
26.02.2015, 16:23 #2
androbro, в принципе, до 2х раз в секунду это нормальное поведение GC.
В Вашем коде я не увидел, например, массового создания локальных переменных в цикле что могло бы спровоцировать частый вызов коллектора.
1
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 889
26.02.2015, 16:35  [ТС] #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
я не увидел, например, массового создания локальных переменных в цикле что могло бы спровоцировать частый вызов коллектора.
вот и мне стало интересно, просто изначально цикл был в таком виде:
Java
1
2
3
4
5
6
                while (!mIsCancel){
                    weight = Integer.valueOf(reader.readLine());
                    status = Integer.valueOf(reader.readLine());
                    publishProgress(new Integer[]{weight, status});
                    out.println(balanses);
                }
Я и подумал что GC часто вызывается из-за new Integer[]{weight, status}, -изменил, но на поведение коллектора это никак не повлияло
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
27.02.2015, 10:52 #4
Лучший ответ Сообщение было отмечено androbro как решение

Решение

androbro, подключитесь с помощью DDMS, посмотрите на работу GC, на выделение памяти. У Вас он должен быть пилообразный (за счёт вызова println в том числе). Если память не течёт - забейте, всё окей.
1
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 889
27.02.2015, 11:27  [ТС] #5
YuraAAA, ну в общем немного помониторив DDMS с параллельным чтением этой статьи, пришел к выводу что все норм.
Спасибо!
0
27.02.2015, 11:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru