Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Сборка мусора  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 2955
Не, ну написано же в умных книгах, что попытка вызвать GC в коде будет носить статус "suggest". Переводится как "предложение".
А дальше в этих книгах написано, что когда ссылки на объект нет, тогда объект может быть удален GC.

Выглядит так, как будто на фундаменте этого простого принципа вы нагородили высокий небоскреб хитроумных противоречий.
14 май 19, 15:59    [21884573]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
mayton
Member

Откуда: loopback
Сообщений: 40520
Мне кажется надо как в сайте Ораклистов начать с цитаты официальной документации.

Инфа по восьмерке
https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#gc--
public static void gc()

Runs the garbage collector.

Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in
order to make the memory they currently occupy available for quick reuse. When control returns from the method
call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.

The call System.gc() is effectively equivalent to the call:
Runtime.getRuntime().gc()

See Also:

Runtime.gc()


Потом пойти в jvm specification и потом в исходники.
14 май 19, 16:04    [21884581]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
Мозговой_слизень
....носить статус "suggest". Переводится как "предложение"....

Во...блин
У Java уже искуственный интелект появился. Ему предлогаешь и он сам принимает решение. КРУТО!
А я похоже отстал от жизни
14 май 19, 16:04    [21884582]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
mayton
Потом пойти в jvm specification и потом в исходники.


OpenJDK_на_просторах_Inet

JVM_ENTRY_NO_ENV(void, JVM_GC(void))
JVMWrapper("JVM_GC");
if (!DisableExplicitGC) {
Universe::heap()->collect(GCCause::_java_lang_system_gc);
}
JVM_END

14 май 19, 16:18    [21884588]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
mayton
Member

Откуда: loopback
Сообщений: 40520
Ну.. если автор будет happy.
14 май 19, 16:22    [21884591]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
забыл ник
Member

Откуда:
Сообщений: 2687
А в других JVM?
14 май 19, 16:29    [21884594]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
mayton
Member

Откуда: loopback
Сообщений: 40520
А в epsilon-gc?
14 май 19, 16:47    [21884609]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 2955
Leonid Kudryavtsev
Мозговой_слизень
....носить статус "suggest". Переводится как "предложение"....

Во...блин
У Java уже искуственный интелект появился. Ему предлогаешь и он сам принимает решение. КРУТО!
А я похоже отстал от жизни


ну а в чем я не прав-то? У тебя есть возможность принудительно и однозначно вызвать GC?
14 май 19, 17:37    [21884656]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
Мозговой_слизень
У тебя есть возможность принудительно и однозначно вызвать GC?

Да
14 май 19, 17:51    [21884664]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
Хотя поторопился.

Сначала, пожалуйсто, поясните, что Вы понимаете под словом "однозначно" Т.к., как я уже и сказал, "в зависимости от настроек".
14 май 19, 17:57    [21884667]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
К сожалению "однозначного" в этом мире ничего нет

Java может вообще никогда GC не вызвать, например если компьютер выключен. То никакой System.GC разумеется, ничем помочь не может ((( Без включенной вилки в розетку - GC очень тяжело работать. Но обычно, я выполнению рекомендации MicroSoft и когда что-то не работает, то проверяю, воткнута ли вилка в розетку.
14 май 19, 18:00    [21884672]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 2955
Leonid Kudryavtsev
К сожалению "однозначного" в этом мире ничего нет

Java может вообще никогда GC не вызвать, например если компьютер выключен. То никакой System.GC разумеется, ничем помочь не может ((( Без включенной вилки в розетку - GC очень тяжело работать. Но обычно, я выполнению рекомендации MicroSoft и когда что-то не работает, то проверяю, воткнута ли вилка в розетку.


ну понятно, пошли отмазки. Вот еще цитатка, подтверждающая то, что Java может игнорировать попытки вызвать GC.

К сообщению приложен файл. Размер - 38Kb
14 май 19, 18:23    [21884688]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
Я уже признал свою вину (((.

Особенно игнорирует когда компьютер выключен. Просто когда писал ответ, об этой возможности не подумал ((( но об этом уже покаялся

Как сложно жить! Все так не однозначно (((
  if (!DisableExplicitGC) {
    Universe::heap()->collect(GCCause::_java_lang_system_gc);
  }


P.S.
Модератор, забаньте меня пожалуйсто на пару суток. А то реально "кипение мозгов". Пойду их холодным стаутом Belhaven залью (((
14 май 19, 18:54    [21884718]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
mayton
Member

Откуда: loopback
Сообщений: 40520
Leonid Kudryavtsev, а я с тёмного на светлое пшеничное перешёл.
14 май 19, 19:00    [21884724]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
забыл ник
Member

Откуда:
Сообщений: 2687
Leonid Kudryavtsev
Я уже признал свою вину (((.

Особенно игнорирует когда компьютер выключен. Просто когда писал ответ, об этой возможности не подумал ((( но об этом уже покаялся

Как сложно жить! Все так не однозначно (((
  if (!DisableExplicitGC) {
    Universe::heap()->collect(GCCause::_java_lang_system_gc);
  }


P.S.
Модератор, забаньте меня пожалуйсто на пару суток. А то реально "кипение мозгов". Пойду их холодным стаутом Belhaven залью (((

В данном случае вы не правы. Есть разница между спецификацией и конкретной имплементацией
14 май 19, 19:03    [21884728]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7607
Мозговой_слизень
...Вот еще цитатка...может игнорировать....

Плохая цитата. Плохая книга. Тут еще полно возможностей:
+

1. Компьютер игнорирует включение, т.к. не воткнут в розетку
2. Windows игнорирует ПРОСЬБУ войти в систему, т.к. не правильный пароль
3. Windows игнориурет ПРОСЬБУ запустить программу, т.к. на компьютере не установлена Java Runtime
4. Windows игнорирует ПРОСЬБУ поставить Java, т.к. нет места на жестком диске
....
10. Кофеварка игнорирует ПРОСЬБУ налить кофе, т.к. закончился кофейный порошек.
....
23. Пивная пробка игнорирует ПРОСЬБУ открутиться, т.к. в конструкции бутылки пива Brewdog PUNK IPA предполагалось использовать открывашку, а ее нет в наличии на работе ((( а открывать пивные бутылки подручными средствами я не умею (((
...
100500. Java игнорирetт ПРОСЬБУ вызвать GC, т.к. у него просто нет настроения

Как сложно жить !!!!

Все... ушел за пивом...

o.s.
Спасибо клавиатуре за любезно предоставленные буквы. Какая хорошая клавиатура, какая плохая Java (((
p.p.s.
- Доктор меня все игнорируют
- Кто "все"?
- Java
- Следующий...
14 май 19, 19:07    [21884734]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3204
Leonid Kudryavtsev
Я уже признал свою вину (((.

Особенно игнорирует когда компьютер выключен. Просто когда писал ответ, об этой возможности не подумал ((( но об этом уже покаялся

Как сложно жить! Все так не однозначно (((
  if (!DisableExplicitGC) {
    Universe::heap()->collect(GCCause::_java_lang_system_gc);
  }

Совершенно зря юродствуете. Код, что вы привели всего-лишь передает информацию сборщику мусора, что кто-то вызвал System.gc(), а тому в свою очередь ничего не мешает это проигнорировать или, к примеру, не выполнять Full GC.

g1CollectedHeap.cpp
bool G1CollectedHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
  switch (cause) {
    case GCCause::_gc_locker:               return GCLockerInvokesConcurrent;
    case GCCause::_java_lang_system_gc:     return ExplicitGCInvokesConcurrent;
    case GCCause::_g1_humongous_allocation: return true;
    case GCCause::_update_allocation_context_stats_inc: return true;
    default:                                return false;
  }
}


cmsHeap.cpp
bool CMSHeap::should_do_concurrent_full_gc(GCCause::Cause cause) {
  switch (cause) {
    case GCCause::_gc_locker:           return GCLockerInvokesConcurrent;
    case GCCause::_java_lang_system_gc:
    case GCCause::_dcmd_gc_run:         return ExplicitGCInvokesConcurrent;
    default:                            return false;
  }
}


т.е. крутилок там несколько, а не одна в виде -XX:+DisableExplicitGC
14 май 19, 19:36    [21884747]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 2955
Leonid Kudryavtsev
Плохая цитата. Плохая книга.


странно, несколько тысяч человек с вами не согласятся)
14 май 19, 19:44    [21884749]     Ответить | Цитировать Сообщить модератору
 Re: Сборка мусора  [new]
Alexey Tomin
Member

Откуда: Самара
Сообщений: 1687
Leonid Kudryavtsev
А этого мало? )))


Ключи - я думал, ещё есть :)

Leonid Kudryavtsev
Просто мне кажется, что по ходу дискуссии идея "что в зависимости от настроек и используемого GC, System.GC() МОЖЕТ игнорироваться" трансформировалась в "код System.GC() выглядит примерно так":
if random() {
  ВЫЗВАТЬ_ЭТОТ_ЧЕРТОВ_GC();
} else {
  пощли_все_лесом()
}



Никакого рандома.
Скорее так: есть накоторое число, харрактеризущее "нужность полной сборки". Например от 0 до 100. При 90 fullGC запуститься автоматически. При 30 и прямой вызов не поможет. Все числа от балды.
15 май 19, 07:43    [21884916]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Java Ответить