@kotlin_lang

Страница 795 из 982
Ivan
06.08.2018
11:41:32
> опубликовано: 10 июля 2018 > старый Однако быстро нынче все устаревает
Лол, я даже не посмотрел =) Просто в соседнем джава чатике такой срач был на тему "а правда что скала теряет полулярность?", что я решил что все в курсе про этот доклад )

Ivan
06.08.2018
11:44:07
И на чем сошлись? Теряет?
Это же срач, у него нет начала и конца =)

Google
Ivan
06.08.2018
11:44:31
Кажется там было мнение что пхпшники переходят на скалу иногда

Руслан
06.08.2018
11:46:36
Потому что с дефолтными настройками JVM будет потреблять все имеющиеся ресурсы.
Ну там не совсем все, вроде 1/4 памяти, только вот не могу найти откуда я это взял https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size

Konstantine
06.08.2018
11:49:01
Alexander
06.08.2018
12:41:37
Ну там не совсем все, вроде 1/4 памяти, только вот не могу найти откуда я это взял https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size
Xmx она жрет. Обычно 1-2 гб. Проблема в том, что там получается очень большой оверхед на создание и поддержку виртуальной машины. Вообще ни разу не рентабельно.

dimiii
06.08.2018
12:50:22
Гонял задачу о рюкзаке на 40Gb при xmx 8Gb без ООМ ).

Sergey
06.08.2018
12:55:02
Руслан
06.08.2018
12:56:09
Ну это JVM так выставляет, у меня лимиты в моих прилажках в среднем 512mb просто потому что памяти достаточно

Alexander
06.08.2018
12:56:56
Не в памяти дело. Просто поддержка JVM - это дорого. Поэтому где можно стоит наоборот всю мелочь в одну виртуалку засовывать

Google
Alexander
06.08.2018
12:57:20
Кроме того, одно дело сколько оно реально жрет, а другое, сколько оно аллоцирует. 512 -то точно.

Mikhail
06.08.2018
12:58:37
жава != спринг, у меня есть приложения работающие на 32мб хипа

Роман
06.08.2018
13:01:04


Alexander
06.08.2018
13:01:40
А теперь посмотрите, сколько оно в процесс манагере отъедает

dimiii
06.08.2018
13:02:02
Хотел пошутить - Java 8 is the new Java 6, но shenandoah бэкпортировали на 8, походу

Mikhail
06.08.2018
13:03:03
гигабайт точно будет

Alexander
06.08.2018
13:03:07
Я про 32 мб

Mikhail
06.08.2018
13:03:55
Я про 32 мб
< 64 точно

около 50ти где-то

Sergey
06.08.2018
13:18:43
А теперь посмотрите, сколько оно в процесс манагере отъедает
90мб хипа может выливаться в 500мб реальной памяти)

Alexander
06.08.2018
13:19:00
я про это и говорю

Sergey
06.08.2018
13:19:02
нативная память + код + метадата + кеши кода + тред память и куча всякого гавна

Alexander
06.08.2018
13:19:28
Скорее, что он отгребает с запасом

Sergey
06.08.2018
13:20:18
если запускать ктор на нетти то реальной памяти как раз около 100-120мб выходит всего

спринг на undertow меньше чем на 350мб запустить это проблемно

Mikhail
06.08.2018
13:21:40
ну так это спринг

я кстати собираюсь переписывыть спринг-бут приложение на свой фреймворк, можно будет потом сравнить потребление памяти

Sergey
06.08.2018
13:28:53
а мы на ктор уезжаем) экономия на каждом запущенном инстансе в 200мб это приятно

Google
Quantum Harmonizer
06.08.2018
13:31:59
да уж, чёт десятка порядка 40 МБ жрёт с -Xms4M -Xms4M -Xss228K

и с 32 так же :)

смотрел в колонку RES В htop, верно?

упс, с 64 ничего не меняется, вот теперь не верю

Sergey
06.08.2018
13:33:40
yep

Mikhail
06.08.2018
13:36:28
а мы на ктор уезжаем) экономия на каждом запущенном инстансе в 200мб это приятно
для ктора тоже хотелось бы свой бекенд прикрутить вместо нетти

Sergey
06.08.2018
13:36:38
там CIO пилят

на корутинах

оно еще и под k/native будет работать

Михаил
06.08.2018
13:37:32
кто объяснит чем отличается viewModel::openInstrument от { viewModel.openInstrument(it) } ?

Михаил
06.08.2018
13:37:48
что там при компиляции происходит?

Sergey
06.08.2018
13:37:52
нативная память + код + метадата + кеши кода + тред память и куча всякого гавна

когда хип в несколько гб, то это все остальное просто мелочь

dimiii
06.08.2018
13:38:30
Quantum Harmonizer
06.08.2018
13:38:59
кто объяснит чем отличается viewModel::openInstrument от { viewModel.openInstrument(it) } ?
чучуть разные классы генерятся, у методрефа больше методов, чем у лямбды

Михаил
06.08.2018
13:40:25
зачем в первом случаем происходит обращение в переменной?

Михаил
06.08.2018
13:41:09
private lateinit var viewModel: ProfilePortfolioViewModel private val onPositionsClicked: (String) -> Unit = { viewModel.openInstrument(it) }

Google
Михаил
06.08.2018
13:41:15
так не падает

private lateinit var viewModel: ProfilePortfolioViewModel private val onPositionsClicked: (String) -> Unit = viewModel::openInstrument

так падает при инициализации

Quantum Harmonizer
06.08.2018
13:41:55
так падает при инициализации
а, точно, есть разница :)

Alexander
06.08.2018
13:41:59
ходил тут по Jep-ам. Нашел Pattern matching, чуть штаны не потерял от удивления. Оказалось обычный when: https://bugs.openjdk.java.net/browse/JDK-8181287

Quantum Harmonizer
06.08.2018
13:42:29
private lateinit var viewModel: ProfilePortfolioViewModel private val onPositionsClicked: (String) -> Unit = viewModel::openInstrument
методреф запекает объект, а лямбда запекает outer и читает объект их проперти

так что разницы нет только в случае с val

dimiii
06.08.2018
13:42:48
private lateinit var viewModel: ProfilePortfolioViewModel private val onPositionsClicked: (String) -> Unit = viewModel::openInstrument
А что будет при объявлении? private lateinit val onPositionsClicked:

Quantum Harmonizer
06.08.2018
13:43:07
Admin
ERROR: S client not available

dimiii
06.08.2018
13:43:37
Ну ок, lateinit var

меня интересует, раскрутит ли компилятор цепочку

Михаил
06.08.2018
13:44:18
А что будет при объявлении? private lateinit val onPositionsClicked:
ну ты его не сможешь в месте объявления проинициализировать

так что зависит от порядка в котором их инициализируешь

dimiii
06.08.2018
13:44:36
Ну, да, заморочно выглядит

Bogdan
06.08.2018
13:46:05
так что зависит от порядка в котором их инициализируешь
Ну учитывая что стоит lateinit, то иницилизация точно не будет на уровне на которой создаеш лямбу

Andrew
06.08.2018
14:41:52
Хороший вопрос для собеса по котлину х)

Igor
06.08.2018
14:43:22
Скорее для пазлеров

Bogdan
06.08.2018
14:44:26
Скорее для пазлеров
Ну тут поведение очевидно все-таки

Quantum Harmonizer
06.08.2018
14:44:36
Хороший вопрос для собеса по котлину х)
«не использую lateinit» — норм ответ?)

Google
Andrew
06.08.2018
14:45:04
Ну тут поведение очевидно все-таки
Ну когда начнёшь об этом думать — да, но выше по чату чудесный пример, что не начнёшь, пока не столкнёшься :)

Mikhail
06.08.2018
14:45:11
На самом деле тут не только про lateinit дело, он только запутывает

Andrew
06.08.2018
14:45:25
«не использую lateinit» — норм ответ?)
От собеседующего зависит :D

Андрей
06.08.2018
14:46:31
«не использую lateinit» — норм ответ?)
тогда ж периодически через Nullable обмазываться придется

некрасиво же

Quantum Harmonizer
06.08.2018
14:47:01
Mikhail
06.08.2018
14:47:40
норм вопрос на собес - что выведе этот код: data class Foo(var bar: Int) val foo = Foo(1) val fooRef1 = foo::bar val fooRef2 = { foo.bar } foo.bar = 2 println(fooRef1()) println(fooRef2())

Quantum Harmonizer
06.08.2018
14:48:26
тут вроде без сюрпризов

а вот если var foo, тогда интереснее

Quantum Harmonizer
06.08.2018
14:51:47
да вроде property.invoke == getter

Mikhail
06.08.2018
14:51:48
1 2 (но я не проверял)

Quantum Harmonizer
06.08.2018
14:52:00
Mikhail
06.08.2018
14:52:14
К -коллайдеру- REPL!

Андрей
06.08.2018
14:53:16
2 2 ящитаю
да, я проверил

Mikhail
06.08.2018
14:53:20
2 2

Андрей
06.08.2018
14:53:21
2 2 в итоге

Quantum Harmonizer
06.08.2018
14:53:43
говорю же, без сюрпризов :)

Андрей
06.08.2018
14:54:16
не очень понятно с val fooRef2 = { foo.bar }

Страница 795 из 982