Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Куда уходит память / 5 сообщений из 5, страница 1 из 1
27.03.2009, 09:15
    #35895510
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит память
имеется 2 класса



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
/// 
Class User.main Extends (%Persistent, %XML.Adaptor)
{

Property mainprop1 As %String;

Relationship rellink As User.sub [ Cardinality = many, Inverse = rellink ];

}


и



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
/// 
Class User.sub Extends (%Persistent, %XML.Adaptor)
{

Property subprop1 As %String;

Relationship rellink As User.main [ Cardinality = one, Inverse = rellink ];

}

и программа генерации данных




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
test
 n
 s om=##class(User.main).%New()
 s om.mainprop1="testing"
 d om.%Save()
 w !
 f i= 1 : 1 : 100000  {
	w $C( 13 ),i
	d Sub(om)
	d om.%Save()
 }
 k om
 q
Sub(main)
 n (main)
 s os=##class(User.sub).%New()
 s os.subprop1="sub testing"
 s os.rellink=main
 d os.%Save()
 k os
 q


после запуска программы
d ^test

начинает выделятся память, которой в какой-то момент не хватит и процесс будет убит
как правильно установить связь, пробовал и через Insert результат тот же

во вложении данные исходники
...
Рейтинг: 0 / 0
27.03.2009, 09:15
    #35895512
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит память
вот вложение
...
Рейтинг: 0 / 0
27.03.2009, 12:36
    #35896173
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит память
http://writeimagejournal.com/forum/index.php?topic=222.0
...
Рейтинг: 0 / 0
27.03.2009, 12:46
    #35896203
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит память
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 n om,sc,omID
 s omID=""
 s om=##class(User.main).%New()
 s om.mainprop1="testing"
 s sc=om.%Save()
 if sc'= 1  { w $system.OBJ.DisplayError() quit  }
 s omID=om.%Id()
 // !!!!
 s om=""
 // !!!!
 w !
 f i= 1 : 1 : 100000  {
	w $C( 13 ),i
	d Sub(omID)
 }
 q
Sub(main)
 // !!!!
 n os
 // !!!!
 s os=##class(User.sub).%New()
 s os.subprop1="sub testing"
 d os.rellinkSetObjectId(main)
 d os.%Save( 0 )
 s os=""
 q
...
Рейтинг: 0 / 0
27.03.2009, 12:50
    #35896221
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Куда уходит память
Собственно мое IMXO состоит в том что "ошибка" заключена в строке
Код: plaintext
1.
2.
Sub(main)
 n (main)  /// и что у нас тут происходит со стеком который выделяется из кучи в 16Мб ?

При дополнительном условии что родительский объект Вы не закрываете, а следовательно он еще и всех детишек тянет, и передается его в процедуру не по ссылке.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Куда уходит память / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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