Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Память и PowerBuilder / 18 сообщений из 18, страница 1 из 1
18.09.2003, 13:11
    #32269046
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Добрый день в Форум!

Сегодня на PB9.0 bild 5507 откомпилил тестовое приложение(два update одного поля в секунду commit тут же, база - Oracle 8.1.5) и даже рекомендации:

>Sergey Rijkov
>Рекомендуют:The fix is to put something in the DBParm property of the SQLCA >object. Something like "Application='MyApp'" or whatever. In the development >environment, edit the connection properties and make sure something is in the >Application Name or Workstation Name on the Network tab

не помогли.
За неполных 4 часа работы постепенно съедено 70 М, причём со странной картиной поедания памяти:
-после запуска ~14 M
-через минуты три ~ 4 M
- через минут пять ~ 20 M
- через минут десят ~ 12 M
....
- через 4 часа ~ 105 M
- через 4 часа и немного ~ 70 M
...
Рейтинг: 0 / 0
18.09.2003, 13:41
    #32269089
Sergey Rijkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Шаманство какое - то :)
Тестовый код в студию.

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
...
Рейтинг: 0 / 0
18.09.2003, 14:47
    #32269217
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Согласен с Сергеем - чудес не бывает, нужно смотреть...

ЗЫ: а какое шаманство сдуло все предыдущие сообщения в этой ветке? До второй страницы вроде бы еще не добрались, да и ссылок перехода нету...
...
Рейтинг: 0 / 0
18.09.2003, 15:09
    #32269255
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Даю код (по событию таймера, каждую секунду):
ii_tik_t++
If ii_tik_t > 100 Then ii_tik_t = 0
UPDATE rut.rut_control
SET control_value = :ii_tik_t
WHERE rut.rut_control.control_name = 'MONITORTABLE'
Using itr_Proc;
If itr_Proc.SqlCode <> 0 Then
RollBack Using itr_Proc;
Else
Commit Using itr_Proc;
End If
End If
...
Рейтинг: 0 / 0
18.09.2003, 15:34
    #32269304
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
совсем забыл: на ОС предел памяти 860 М (как позаывает XP),
кроме того после запуска приложения через ~5,5 часов уже съедено 115 M
...
Рейтинг: 0 / 0
18.09.2003, 16:54
    #32269492
Sergey Rijkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Дааа.. странно, прогнал твой тестовый пример, PB 6.5.1 + Oracle 9.2 - никаких пожираний, втечение 3 часов !!!

Одно но..., я тестировал UPDATE ... без USING itr_transObject

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
...
Рейтинг: 0 / 0
19.09.2003, 06:44
    #32269781
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
>Sergey Rijkov
Дааа.. странно, прогнал твой тестовый пример, PB 6.5.1 + Oracle 9.2 - никаких пожираний, втечение 3 часов !!!

Одно но..., я тестировал UPDATE ... без USING itr_transObject



itr_Proc - instanse типа transaction.
Можно взглянуть на .DBParm ?
...
Рейтинг: 0 / 0
19.09.2003, 09:53
    #32269891
Sergey Rijkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
RE>itr_Proc - instanse типа transaction.
Ну это понятно

RE>Можно взглянуть на .DBParm ?
Нет его :), вот для чистоты эксп-а

SQLCA.DBMS = 'O73 ORACLE 7.3'
SQLCA.LogID = Trim(name.Text)
SQLCA.LogPass = Trim(password.Text)
SQLCA.ServerName = Trim(server.Text)

connect using SQLCA;

DO WHILE true
UPDATE GEO.TEST_TABLE SET TEST_TABLE_FIELD = 1 WHERE TEST_TABLE_UNID = 1;
COMMIT;
LOOP

И все в норме.

Твой код ?
...
Рейтинг: 0 / 0
19.09.2003, 10:58
    #32269987
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
SQLCA.DBParm = "CommitOnDisconnect='No',Date=' ''''dd.mm.yyyy'''' ',DateTime=' ''''dd.mm.yyyy hh:mm:ss'''' ',Time=' ''''hh:mm:ss'''' ',NumbersInternal=1,StaticBind=0,ObjectMode='No',FormatArgsAsExp='Yes'"

Интересно, имеет значение где конектится переменная в скрипте апликации или в скрипте окна?
...
Рейтинг: 0 / 0
19.09.2003, 10:59
    #32269991
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Совсем забыл
SQLCA.DBMS = "O84 Oracle8/8i (8.x.4+)"
...
Рейтинг: 0 / 0
19.09.2003, 11:24
    #32270034
Sergey Rijkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Совсем забыл
SQLCA.DBMS = "O84 Oracle8/8i (8.x.4+)"


Сразу бы так и говорил :), на самомо деле мы столько гиммора, извиняюсь, получили с этим O84 !!!
Хотя вроде, как я помню для Oracle 8.1.5 другого варианта нет :(, но скорее всего ошибаюсь.

Не к теме, а зачем тебе StaticBind=0 ? (просто интересно)


-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
...
Рейтинг: 0 / 0
19.09.2003, 11:40
    #32270060
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Так это я так из-за Oracle 8.1.5. Может нужна другая длл, у меня pbo8490.dll версия 9.0.0.5507, размер 302592?
...
Рейтинг: 0 / 0
19.09.2003, 12:06
    #32270108
Sergey Rijkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Честно говоря больше ничем не могу помочь :(.
Но на 99% уверен - дело в dll

У нас были проблемы с Pbo8460.dll [6.5.0.1173] [209 408]
Используем pbo7360.dll [6.5.1.620] [182 272], даже для Oracle 9.2 проблем не замечено !

И вообще где-то читал, что не рекомендуется использовать Pbo84XX


-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
...
Рейтинг: 0 / 0
19.09.2003, 12:37
    #32270166
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
У меня почему-то база не цепляется через pbo7390 (правда я пытаюсь на PB 9.0 bild 5507 - pbo7390.dll [9.0.0.5507] [246 272]). Говорит, что нету: unable to connect to destination, хотя в Net8 конектится (WinXP Prof sp 1).

А PB 6.5.1 с pbo7360.dll [6.5.1.620] [182 272] зовёт доктора Ватсона (WinNT 4.0 sp 6a)
...
Рейтинг: 0 / 0
19.09.2003, 13:07
    #32270211
Sergey Rijkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Ну дык я ж говорил, что для Oracle 8.1.5 нужна именна эта длл, которая глючная. Так что ради билдера смени сервак или же не парься и напиши хранимую

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
...
Рейтинг: 0 / 0
19.09.2003, 13:22
    #32270237
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Вот так!
Прийдётся писать контроллер памяти. Может кто знает как сдёрнуть занимаемую, свободную и тд память через API?
...
Рейтинг: 0 / 0
19.09.2003, 15:37
    #32270457
Геннадич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Совершенно случайно, ради эксперимента и по совету Sergey Rijkov убрал SQLCA.DBParm, всмысле = "". И что-же: под WinNT 4.0 уже час стоит и память не жрёт! А вот под WinXP картина немного другая: Память постепенно сжирается примерно до 1/8 максимально возможной и падает до первоначального уровня.

Спасибо огромное за внимание! Тему, думаю, можно считать закрытой.
...
Рейтинг: 0 / 0
19.09.2003, 16:04
    #32270516
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Память и PowerBuilder
Обращаю внимание почтенной публики, про то что начиная с версии 8.0.3 в PB используется другой менеджер памяти.

Читаем в readme.txt для PB 8.0.3 Build 9704

"Section III: Memory Usage Improvements
======================================
Heap manager changed
--------------------
In order to improve memory management, the SybHeap manager replaces
SmartHeap 6.0.2 as the memory manager in this release. When blocks of
memory are freed, the SybHeap manager does not return them to the
operating system. Instead it maintains them in a free list for reuse
.
The SybHeap manager generally uses less memory by more effectively
managing its free lists and reducing fragmentation."

Далее уже для PB 8.0.3 build 9850


Libjsybheap.dll - New file required for development and deployment
------------------------------------------------------------------
This PB 8.0.3 EBF build, includes a new DLL called libjsybheap.dll. This DLL must be installed into the Sybase\Shared\PowerBuilder folder along with the other PB DLLs (i.e., Pbdwe80.dll, etc.) or else the PB development environment will not start up.
This file provides the SybHeap memory manager, which replaces the SmartHeap 6.0.2 memory manager.

Теперь давайте посмотрим, что написано про менеджер памяти в файле PB901mr_fixes.htm

Change Request#: 289939 Priority: 0
Product Name: PB Enterprise - 8.0.2 OS: Microsoft Windows NT
Product Component: DW - Runtime

Fixed in Version #:
9.0.1

Description:
PowerBuilder 8 Build 9603 uses a new memory manager (versus SmartHeap), and with that build VERY LARGE allocations of memory for datastores are being reported and memory requirements SEEM to be 2x that of the SmartHeap builds.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Память и PowerBuilder / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]