Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Tayson
Člen
Avatar
Tayson:12.11.2013 9:50

Co to znamena ak mi napise takuto chybu ???

Exception of type 'System.OutOf­MemoryExcepti­on' was thrown.

V podstate mam len vytvoreny List

private List<string> string_receive = new List<string>();

a do tohto listu si ukladam staticku premennu z inej triedy ktorej obsahom su retazce roznej velkosti

a pridavanie vyzera takto

string_receive­.Add(communica­tion.received­String);

kde communication je nazov triedy kde je ta staticka premenna ulozena.

Dakujem za rady

 
Odpovědět
12.11.2013 9:50
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Tayson
David Hartinger:12.11.2013 10:02

"OutOfMemory" již podle názvu znamená, že ti došla paměť ;-) Zřejmě tam cpeš nějaká velká data v cyklu.

Nahoru Odpovědět
12.11.2013 10:02
You are the greatest project you will ever work on.
Avatar
Tayson
Člen
Avatar
Odpovídá na David Hartinger
Tayson:12.11.2013 10:29

No tak to mi doslo ze to bude nieco s pamatou ... necakal som ze par stringov ju dokaze takto zahltit

 
Nahoru Odpovědět
12.11.2013 10:29
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Tayson
David Hartinger:12.11.2013 10:36

Záleží jak to máš napsané. C# paměť uvolňuje sám, ale jsou situace, kdy to nedělá. Pokud máš server, kde ti stále jede jedna metoda, tak je možné, že po ní neuklidí, protože vlastně nikdy neskončí. Můžeš zkusit občas zavolat GC.Collect(), tím explicitně zavoláš mechanismus, který paměť uvolňuje. Dokud sem ale nevložíš kód, tak na to těžko přijdeme.

Nahoru Odpovědět
12.11.2013 10:36
You are the greatest project you will ever work on.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Tayson
Petr Nymsa:12.11.2013 10:37

Tam to může být něčím jiným. Co přesněji děláš ?

Nahoru Odpovědět
12.11.2013 10:37
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Tayson
Člen
Avatar
Odpovídá na Petr Nymsa
Tayson:12.11.2013 11:04

Mam takyto kod spusteny vo vlakne
while(!work)
{
if (!communicati­on.receivedStrin­g.Contains("re­tazec1"))
{
if (communication­.receivedStrin­g.Contains("re­tazec2"))
{
string_receive­.Add(communica­tion.received­String);
}
}
else
{
work=true;
}
}

 
Nahoru Odpovědět
12.11.2013 11:04
Avatar
Tayson
Člen
Avatar
Odpovídá na Tayson
Tayson:12.11.2013 11:59

Uzmi to nevypisuje tu vynimku pretoze som tam pridal jednu podmienku a filtrujem data ale problem mam v tomto tu:

string_receive­.Add(communica­tion.received­String);

vlastne pridavam staticku premennu do Listu<> ale mam pocit ze tam zapise stale tu istu hodnotu do celeho Listu

 
Nahoru Odpovědět
12.11.2013 11:59
Avatar
Tayson
Člen
Avatar
Odpovídá na David Hartinger
Tayson:12.11.2013 12:03

No kod som sem vlozil

 
Nahoru Odpovědět
12.11.2013 12:03
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Tayson
David Hartinger:12.11.2013 13:17

Jak jsem psal, pokud tam pořád cpeš další a další data a nikdy je nemažeš, tak ti togicky někdy dojde paměť.

Nahoru Odpovědět
12.11.2013 13:17
You are the greatest project you will ever work on.
Avatar
Tayson
Člen
Avatar
Odpovídá na David Hartinger
Tayson:12.11.2013 14:54

Ale prečo mi to do Listu neuklada z tej premennej retazce ... treba vytvorit List<string []> ???

 
Nahoru Odpovědět
12.11.2013 14:54
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Tayson
Jan Vargovský:12.11.2013 15:06

A co ti to ukládá ?

 
Nahoru Odpovědět
12.11.2013 15:06
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Tayson
Theodor Johnson:12.11.2013 15:06

Protože tam cpeš statiku, tím tam vlastně nacpeš "odkaz" na ten text a jakmile ho změníš a chceš ho znovu uložit tak se změní všechny, protože všechny vedou k tomu jednomu

Nahoru Odpovědět
12.11.2013 15:06
Mo8ilε 15 Ѐλđ
Avatar
Tayson
Člen
Avatar
Odpovídá na Theodor Johnson
Tayson:12.11.2013 15:15

No ostane tam posledný uložený text mam pocit a neuloží tam všetky ako chcem. Nevieš mi poradit ako to spravit aby tam ukladalo normálne texty teda celé vety a aby som si mohol potom vytiahnut obsah ? teda chcel by som to takto aby ked dám string_receive[2] aby vypisalo vetu v tom poradi

 
Nahoru Odpovědět
12.11.2013 15:15
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Tayson
David Hartinger:12.11.2013 16:06

Dokud sem nevložíš celý kód aplikace, tak ti těžko někdo poradí.

Nahoru Odpovědět
12.11.2013 16:06
You are the greatest project you will ever work on.
Avatar
Tayson
Člen
Avatar
Odpovídá na David Hartinger
Tayson:12.11.2013 16:27

Ved kod som vlozil hore ... akurat to mi nejde tak si myslim zeby to malo stacit dokonca si to spustam vo vlakne ... nepotrebujem nic len ukladat data konretne typu string do Listu<string> ale problem je v tom ze sa mi tam asi neukladaju spravne ... tie data su vety ktore maju co ja viem 6 a viac slov a potrebujem si do Listu<> ulozti dajme tomu na prve miesto prvu vetu a tak dalej a potom si to vybrat a zobrazit celu vetu

 
Nahoru Odpovědět
12.11.2013 16:27
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Tayson
Theodor Johnson:12.11.2013 20:56

Sice jsi ten kód dal nahoru, ale ne to jak získáš 'communication­.receivedStrin­g'

Nahoru Odpovědět
12.11.2013 20:56
Mo8ilε 15 Ѐλđ
Avatar
Tayson
Člen
Avatar
Odpovídá na Theodor Johnson
Tayson:12.11.2013 21:20

To je premenná v triede communication ktorá je verejná a statická a do tejto premennej sa ukladajú prijaté dáta cez UDP protkol. Táto premenná sa dynamicky mení z každými prijatími dátama v cykle while. A volám si ju takto communication­.receivedString

 
Nahoru Odpovědět
12.11.2013 21:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.