🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
15 messages
15 total messages Started by obi wan firthe kenobi Mon, 12 Jan 2015 18:23
[n00b] reczne sterowanie gc
#154115
Author: obi wan firthe kenobi
Date: Mon, 12 Jan 2015 18:23
9 lines
1538 bytes
jesli pisze sie aplikacje ktore dzialają
w 'systemie ramkowym' (by tak to nazwac)
np 50 fps, to przydaloby sie zeby te 
kosztowniejsze operacje garbage collectora
nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej 
ramki (i by zablokowac je wczesniej tj dla czasu 
 ramki)

czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
Re: [n00b] reczne sterowanie gc
#154116
Author: Arivald
Date: Mon, 12 Jan 2015 19:46
27 lines
2126 bytes
On 2015-01-12 19:23, obi wan firthe kenobi wrote:
> jesli pisze sie aplikacje ktore dzialają
> w 'systemie ramkowym' (by tak to nazwac)
> np 50 fps, to przydaloby sie zeby te
> kosztowniejsze operacje garbage collectora
> nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
> ramki (i by zablokowac je wczesniej tj dla czasu
>   ramki)
>
> czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
>

System.gc(), ale nie ma gwarancji że to coś robi w danej implementacji 
JVM. Ani gwarancji ile czasu zajmie.

Po za tym niektóre JVM mogą mieć więcej metod do kontroli GC. W 
szczególności nowoczesne JVM mogą robić GC w osobnym wątku, mogą robić 
przyrostowo (określoną ilość do limitu w danym cyklu), mogą robić coś 
jeszcze bardziej wymyślnego.


Po drugie tak koduj żeby ograniczyć alokacje pamięci. Czyli np. ponowne 
wykorzystanie obiektów, unikanie ich tworzenia, etc. Temat rzeka.
Wyrzucenie części operacji do wątków też czasem pomaga.

-- 
Arivald
Re: [n00b] reczne sterowanie gc
#154117
Author: obi wan firthe kenobi
Date: Mon, 12 Jan 2015 20:36
37 lines
3093 bytes
W dniu poniedziałek, 12 stycznia 2015 20:46:28 UTC+1 użytkownik Arivald napisał:
> On 2015-01-12 19:23, obi wan firthe kenobi wrote:
> > jesli pisze sie aplikacje ktore dzialają
> > w 'systemie ramkowym' (by tak to nazwac)
> > np 50 fps, to przydaloby sie zeby te
> > kosztowniejsze operacje garbage collectora
> > nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
> > ramki (i by zablokowac je wczesniej tj dla czasu
> >   ramki)
> >
> > czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
> >
> 
> System.gc(), ale nie ma gwarancji że to coś robi w danej implementacji 
> JVM. Ani gwarancji ile czasu zajmie.
> 
> Po za tym niektóre JVM mogą mieć więcej metod do kontroli GC. W 
> szczególności nowoczesne JVM mogą robić GC w osobnym wątku, mogą robić 
> przyrostowo (określoną ilość do limitu w danym cyklu), mogą robić coś 
> jeszcze bardziej wymyślnego.
> 
> 
> Po drugie tak koduj żeby ograniczyć alokacje pamięci. Czyli np. ponowne 
> wykorzystanie obiektów, unikanie ich tworzenia, etc. Temat rzeka.
> Wyrzucenie części operacji do wątków też czasem pomaga.
> 
> -- 
> Arivald

znalazlem taki cytat 

"If you use direct memory buffers, the JVM doesn't run the GC for you even if you are running low on direct memory." 

czy to zanaczy ze przy uzywaniu tych direct memory buffers gc jest wylaczany? (chodzi o mi ogolnie o unikniecie tych wiadomych niedeterministycznych 'zaciec', rozumiem ze 
java tego nie umozliwia? a moglaby zaiste,
potrzebny bylby po prostu sposob oznaczenia bloku kodu - w tym bloku nie wywoluj zadnego
spowalniajacego kolekcjonowania
Re: [n00b] reczne sterowanie gc
#154118
Author: obi wan firthe kenobi
Date: Mon, 12 Jan 2015 20:39
3 lines
1733 bytes
+ inna komenda tu wywolaj sprzatanie (to tez by sie przydalo)

inna sprawa jest w javie sposob na wylczenie bound checking dla pewnych blokow kodu?
Re: [n00b] reczne sterowanie gc
#154119
Author: Arivald
Date: Mon, 12 Jan 2015 23:41
12 lines
1487 bytes
On 2015-01-12 21:39, obi wan firthe kenobi wrote:
> + inna komenda tu wywolaj sprzatanie (to tez by sie przydalo)

A przeczytałeś w ogóle co robi System.gc()?

Tu masz linka, jeśli używanie Google sprawia Ci kłopot:
http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#gc%28%29

RTM

-- 
Arivald
Re: [n00b] reczne sterowanie gc
#154120
Author: obi wan firthe kenobi
Date: Tue, 13 Jan 2015 14:46
15 lines
2004 bytes
W dniu wtorek, 13 stycznia 2015 00:41:00 UTC+1 użytkownik Arivald napisał:
> On 2015-01-12 21:39, obi wan firthe kenobi wrote:
> > + inna komenda tu wywolaj sprzatanie (to tez by sie przydalo)
> 
> A przeczytałeś w ogóle co robi System.gc()?
> 
> Tu masz linka, jeśli używanie Google sprawia Ci kłopot:
> http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#gc%28%29
> 
> RTM
> 
to nie jest odpowiedz na pytanie, wroc do tekstu posta 
jesli masz trudnosci z rozumieniem pytan,
posiadasz widoczne
 
Re: [n00b] reczne sterowanie gc
#154121
Author: J-23
Date: Fri, 16 Jan 2015 00:32
18 lines
1593 bytes
W dniu 12.01.2015 o 19:23, obi wan firthe kenobi pisze:
> jesli pisze sie aplikacje ktore dzialają
> w 'systemie ramkowym' (by tak to nazwac)
> np 50 fps, to przydaloby sie zeby te
> kosztowniejsze operacje garbage collectora
> nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
> ramki (i by zablokowac je wczesniej tj dla czasu
>   ramki)
>
> czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
>

Nie da się tego tak zrobić że oznaczysz (Tutaj nie wykonujemy GC)

Da się natomiast tym odpowiednio sterować tylko temat jest bardzo 
głęboki a ty podałeś bardzo mało danych

Pozdrawiam
Re: [n00b] reczne sterowanie gc
#154122
Author: obi wan firthe kenobi
Date: Fri, 16 Jan 2015 18:18
19 lines
2114 bytes
W dniu piątek, 16 stycznia 2015 01:32:19 UTC+1 użytkownik J-23 napisał:
> W dniu 12.01.2015 o 19:23, obi wan firthe kenobi pisze:
> > jesli pisze sie aplikacje ktore dzialają
> > w 'systemie ramkowym' (by tak to nazwac)
> > np 50 fps, to przydaloby sie zeby te
> > kosztowniejsze operacje garbage collectora
> > nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
> > ramki (i by zablokowac je wczesniej tj dla czasu
> >   ramki)
> >
> > czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
> >
> 
> Nie da się tego tak zrobić że oznaczysz (Tutaj nie wykonujemy GC)
> 
> Da się natomiast tym odpowiednio sterować tylko temat jest bardzo 
> głęboki a ty podałeś bardzo mało danych
> 
to jest w sumie odpowiedz + tez mi sie tak zdawalo, wnikac w temat nie mam czasu
Re: [n00b] reczne sterowanie gc
#154123
Author: J-23
Date: Fri, 16 Jan 2015 23:43
27 lines
2079 bytes
W dniu 16.01.2015 o 19:18, obi wan firthe kenobi pisze:
> W dniu piątek, 16 stycznia 2015 01:32:19 UTC+1 użytkownik J-23 napisał:
>> W dniu 12.01.2015 o 19:23, obi wan firthe kenobi pisze:
>>> jesli pisze sie aplikacje ktore dzialają
>>> w 'systemie ramkowym' (by tak to nazwac)
>>> np 50 fps, to przydaloby sie zeby te
>>> kosztowniejsze operacje garbage collectora
>>> nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
>>> ramki (i by zablokowac je wczesniej tj dla czasu
>>>    ramki)
>>>
>>> czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
>>>
>>
>> Nie da się tego tak zrobić że oznaczysz (Tutaj nie wykonujemy GC)
>>
>> Da się natomiast tym odpowiednio sterować tylko temat jest bardzo
>> głęboki a ty podałeś bardzo mało danych
>>
> to jest w sumie odpowiedz + tez mi sie tak zdawalo, wnikac w temat nie mam czasu
>


Ale zauważ że jak podczas przetwarzania grafiki ci się włacza GC a ty 
tego nie chcesz :) to jest coś źle zaprojektowane

Pozdrawiam
Re: [n00b] reczne sterowanie gc
#154127
Author: Sebastian Biały
Date: Sat, 17 Jan 2015 09:33
6 lines
1099 bytes
On 2015-01-12 19:23, obi wan firthe kenobi wrote:
> czy da sie cos takiego zrobic w javie?

Niekoniecznie w czystej javie, ale blisko:

http://en.wikipedia.org/wiki/Real_time_Java
Re: [n00b] reczne sterowanie gc
#154128
Author: obi wan firthe kenobi
Date: Tue, 20 Jan 2015 14:19
10 lines
1765 bytes
W dniu sobota, 17 stycznia 2015 10:33:33 UTC+1 użytkownik Sebastian Biały napisał:
> On 2015-01-12 19:23, obi wan firthe kenobi wrote:
> > czy da sie cos takiego zrobic w javie?
> 
> Niekoniecznie w czystej javie, ale blisko:
> 
> http://en.wikipedia.org/wiki/Real_time_Java

a kojarzysz moze dokladniej jak tam sie to robi? (nie mam czasu sie wglebiac, nie pisze w javie, ale
byuloby to ciekawe) - jak nie nie ma sprawy
Re: [n00b] reczne sterowanie gc
#154124
Author: obi wan firthe kenobi
Date: Tue, 20 Jan 2015 14:23
28 lines
2881 bytes
W dniu sobota, 17 stycznia 2015 00:43:56 UTC+1 użytkownik J-23 napisał:
> W dniu 16.01.2015 o 19:18, obi wan firthe kenobi pisze:
> > W dniu piątek, 16 stycznia 2015 01:32:19 UTC+1 użytkownik J-23 napisał:
> >> W dniu 12.01.2015 o 19:23, obi wan firthe kenobi pisze:
> >>> jesli pisze sie aplikacje ktore dzialają
> >>> w 'systemie ramkowym' (by tak to nazwac)
> >>> np 50 fps, to przydaloby sie zeby te
> >>> kosztowniejsze operacje garbage collectora
> >>> nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
> >>> ramki (i by zablokowac je wczesniej tj dla czasu
> >>>    ramki)
> >>>
> >>> czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
> >>>
> >>
> >> Nie da się tego tak zrobić że oznaczysz (Tutaj nie wykonujemy GC)
> >>
> >> Da się natomiast tym odpowiednio sterować tylko temat jest bardzo
> >> głęboki a ty podałeś bardzo mało danych
> >>
> > to jest w sumie odpowiedz + tez mi sie tak zdawalo, wnikac w temat nie mam czasu
> >
> 
> 
> Ale zauważ że jak podczas przetwarzania grafiki ci się włacza GC a ty 
> tego nie chcesz :) to jest coś źle zaprojektowane
> 
normalnie w takiej aplikacji jaka mam na mysli generuje sie sie ramke (i wtedy gc nie powinien sie wlaczac bo bylaby kaszana) po czym wywoluje sie sleep() - ten sleep nie trwa dlugo i nie wiem czy cos takiego jest w javie - ale na przyklad wtwdy gc moglby robic sobie kawalki tej roboty
Re: [n00b] reczne sterowanie gc
#154125
Author: J-23
Date: Tue, 20 Jan 2015 15:58
34 lines
2677 bytes
W dniu 20.01.2015 o 15:23, obi wan firthe kenobi pisze:
> W dniu sobota, 17 stycznia 2015 00:43:56 UTC+1 użytkownik J-23 napisał:
>> W dniu 16.01.2015 o 19:18, obi wan firthe kenobi pisze:
>>> W dniu piątek, 16 stycznia 2015 01:32:19 UTC+1 użytkownik J-23 napisał:
>>>> W dniu 12.01.2015 o 19:23, obi wan firthe kenobi pisze:
>>>>> jesli pisze sie aplikacje ktore dzialają
>>>>> w 'systemie ramkowym' (by tak to nazwac)
>>>>> np 50 fps, to przydaloby sie zeby te
>>>>> kosztowniejsze operacje garbage collectora
>>>>> nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
>>>>> ramki (i by zablokowac je wczesniej tj dla czasu
>>>>>     ramki)
>>>>>
>>>>> czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
>>>>>
>>>>
>>>> Nie da się tego tak zrobić że oznaczysz (Tutaj nie wykonujemy GC)
>>>>
>>>> Da się natomiast tym odpowiednio sterować tylko temat jest bardzo
>>>> głęboki a ty podałeś bardzo mało danych
>>>>
>>> to jest w sumie odpowiedz + tez mi sie tak zdawalo, wnikac w temat nie mam czasu
>>>
>>
>>
>> Ale zauważ że jak podczas przetwarzania grafiki ci się włacza GC a ty
>> tego nie chcesz :) to jest coś źle zaprojektowane
>>
> normalnie w takiej aplikacji jaka mam na mysli generuje sie sie ramke (i wtedy gc nie powinien sie wlaczac bo bylaby kaszana) po czym wywoluje sie sleep() - ten sleep nie trwa dlugo i nie wiem czy cos takiego jest w javie - ale na przyklad wtwdy gc moglby robic sobie kawalki tej roboty
>

A o wątkach słyszałeś :)??

Pozdrawiam
Re: [n00b] reczne sterowanie gc
#154129
Author: Sebastian Biały
Date: Tue, 20 Jan 2015 18:04
14 lines
1741 bytes
On 2015-01-20 15:19, obi wan firthe kenobi wrote:
>> Niekoniecznie w czystej javie, ale blisko:
>> http://en.wikipedia.org/wiki/Real_time_Java
> a kojarzysz moze dokladniej jak tam sie to robi? (nie mam czasu sie wglebiac, nie pisze w javie, ale
> byuloby to ciekawe) - jak nie nie ma sprawy

Z grubsza mozna zabronić pracy gc dla określonych bloków pamięci oraz 
określonych wątków o ile pamiętam. W szczególe kolega używał do jakegoś 
projektu z robotymi i mówił że działa zaskakująco dobrze ale ja bliżej 
się tym nie bawiłem. Na youtubie jest troche video jak java robi w 
czasie rzeczywistym obliczenia które przy działającym gc były by 
upiedliwe, np tutaj:

https://www.youtube.com/watch?v=lXct7Bzdhzw
Re: [n00b] reczne sterowanie gc
#154126
Author: Arivald
Date: Tue, 20 Jan 2015 19:29
50 lines
3484 bytes
On 2015-01-20 15:23, obi wan firthe kenobi wrote:
> W dniu sobota, 17 stycznia 2015 00:43:56 UTC+1 użytkownik J-23 napisał:
>> W dniu 16.01.2015 o 19:18, obi wan firthe kenobi pisze:
>>> W dniu piątek, 16 stycznia 2015 01:32:19 UTC+1 użytkownik J-23 napisał:
>>>> W dniu 12.01.2015 o 19:23, obi wan firthe kenobi pisze:
>>>>> jesli pisze sie aplikacje ktore dzialają
>>>>> w 'systemie ramkowym' (by tak to nazwac)
>>>>> np 50 fps, to przydaloby sie zeby te
>>>>> kosztowniejsze operacje garbage collectora
>>>>> nie wykonywaly sie jakos losowo tylko by np mozna wywolywac je pod koniec bloku kodu dla danej
>>>>> ramki (i by zablokowac je wczesniej tj dla czasu
>>>>>     ramki)
>>>>>
>>>>> czy da sie cos takiego zrobic w javie? (tj kontrolowac recznie kiedy to ma sie wykonac)?
>>>>>
>>>>
>>>> Nie da się tego tak zrobić że oznaczysz (Tutaj nie wykonujemy GC)
>>>>
>>>> Da się natomiast tym odpowiednio sterować tylko temat jest bardzo
>>>> głęboki a ty podałeś bardzo mało danych
>>>>
>>> to jest w sumie odpowiedz + tez mi sie tak zdawalo, wnikac w temat nie mam czasu
>>>
>>
>>
>> Ale zauważ że jak podczas przetwarzania grafiki ci się włacza GC a ty
>> tego nie chcesz :) to jest coś źle zaprojektowane
>>
> normalnie w takiej aplikacji jaka mam na mysli generuje sie sie ramke (i wtedy gc nie powinien sie wlaczac bo bylaby kaszana) po czym wywoluje sie sleep() - ten sleep nie trwa dlugo i nie wiem czy cos takiego jest w javie - ale na przyklad wtwdy gc moglby robic sobie kawalki tej roboty
>

K@%@a kombinujesz aż mnie zęby bolą...

Po prostu na końcu ramki, jak już masz wszystko policzone, to wywołaj GC 
przy pomocy "System.gc()". Dzięki temu GC co może to wyczyści w czasie 
kiedy Twój program i tak czeka do początku następnej ramki. Nie 
gwarantuje Ci to że GC się nie odpali w trakcie ramki, ale znaczni 
obniża prawdopodobieństwo.

Usiłuję Ci to od początku przekazać, a ty jak muł opierasz się, i w 
zamian kombinujesz jakieś niestworzone rzeczy...


Kolejny czynnik to dostępność ramu - jeśli jest go więcej niż potrzeba 
na obliczenia w jednej ramce, to (zakładając wołanie GC na koniec ramki) 
GC się nie odpali w trakcie ramki, bo nie ma po co.


-- 
Arivald
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads