Size: a a a

2020 May 20

AG

Alexey Genus in pro.jvm
Я бы код посмотрел, потому что не очень понятно, как регистрация бина влияет на его конфигурацию
источник

VG

Vasiliy Gruzdev in pro.jvm
Alexey Genus
Похоже, что микросервис)
Микросервис
источник

RG

Rinchin G in pro.jvm
Vladimir Sitnikov
На OpenJDK/Hotspot — точно из heapdump можно получить threaddump.

Не стоит забывать и про coredump — из него можно получить и heapdump и threaddump и много чего ещё
Ага, большое спасибо. В VisualVM открыл, там действительно threaddump есть). Но толку большого не получил. В нем FinalizerThread wait - ничего не делает.
У меня было предположение что от того что там какой то объект подвис на выполнении -> то забивается очередь на вызов finalize в этом thread. Но раз ничего он не делает то скорее всего что просто память переполняется из за больших объектов. И тут у меня вопрос?

Сам Eclipse MAT говорит что в нем Finalizer имеет размер 328 мегабайт.
А когда я пытаюсь извлечь из него объекты что же там в очереди то извлекаю следующим запросом
SELECT OBJECTS referent FROM INSTANCEOF java.lang.ref.Finalizer
и делаю show as Histogram то там всего 654kb

почему такая разница? Может я как то неправильно смотрю содержимое Finalizer?
источник

AG

Alexey Genus in pro.jvm
654 кб - это shallow или retained?
источник

RG

Rinchin G in pro.jvm
Class Name                                                              | Objects | Shallow Heap
-------------------------------------------------------------------------------------------------
java.util.jar.JarFile                                                   |   5,080 |      325,120
java.net.SocksSocketImpl                                                |   1,639 |      183,568
org.apache.axis2.client.ServiceClient                                   |   1,444 |       69,312
----свои_классы1 extends stub                             |   1,152 |       55,296
----свои_клаcсы2 extends stub                                          |     281 |       13,488
java.util.zip.Inflater                                                  |      59 |        2,832
org.apache.http.impl.conn.BasicClientConnectionManager                  |      21 |          840
java.util.concurrent.ThreadPoolExecutor                                 |      17 |        1,360
----свои_классы3 extends stub                                   |      11 |          528
java.io.FileInputStream                                                 |      10 |          320
java.io.FileOutputStream                                                |       9 |          288
sun.net.www.protocol.jar.URLJarFile                                     |       6 |          480
java.lang.ClassLoader$NativeLibrary                                     |       5 |          200
java.util.concurrent.ScheduledThreadPoolExecutor                        |       4 |          320
org.apache.tomcat.util.net.NioBlockingSelector$KeyReference             |       4 |           64
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager                |       2 |          112
com.mchange.v2.resourcepool.BasicResourcePool                           |       2 |          432
java.util.concurrent.Executors$FinalizableDelegatedExecutorService      |       2 |           32
java.util.Timer$1                                                       |       2 |           32
com.sun.net.ssl.internal.ssl.Provider                                   |       1 |           96
org.apache.http.impl.conn.PoolingClientConnectionManager                |       1 |           32
org.apache.tomcat.util.threads.ThreadPoolExecutor                       |       1 |           96
org.apache.xml.resolver.readers.TR9401CatalogReader                     |       1 |           32
org.grails.async.factory.future.CachedThreadPoolPromiseFactory$1        |       1 |           88
--------------------------------------------------------------------------------------------------
Total: 24 entries                                                       |   9,755 |      654,968
источник

AG

Alexey Genus in pro.jvm
Вот, это shallow. А в гистограмме обычно показывают retained. Отсюда и разница
источник

AG

Alexey Genus in pro.jvm
Лучше всего убрать все finalize(), это 99% поможет
источник

RG

Rinchin G in pro.jvm
Alexey Genus
Лучше всего убрать все finalize(), это 99% поможет
где их убрать? в своих пакетах?
источник

AG

Alexey Genus in pro.jvm
Ну да
источник

RG

Rinchin G in pro.jvm
т.е. эти три своих класса не наследовать от org.apache.axis2.client.stub (где определен finalize()) а сделать композицию?
источник

RG

Rinchin G in pro.jvm
положить stub во внутрь этих трех классов?
источник

AG

Alexey Genus in pro.jvm
Нет, это вряд ли поможет.
Что, если начать сначала с проверки того, что действительно проблема в финализации? Для этого можно через jmx вытащить метрику objectPendingFinalizationCount. Если она растёт, то дело действительно в ней.
Потом можно запрофилировать приложение и понять, почему тормозит финализация. Если эту причину можно убрать, то нужно её убрать. Иначе придётся просто добавить памяти
источник

AV

Alexei Vinogradov in pro.jvm
Забавный момент. Есть такая вещь - темплейты. Например Apache FreeMarker (ftl), Java. И в этих темплейтах частенько полно логики, которую полезно покрывать юнит тестами.
Как проверить coverage таких тестов? Не нашел сейчас на вскидку инструментов, хотя проблема то довольно общая.

Какие-то идеи?

Ну кроме - "логика в темплейтах - зло".

Для старожилов - когда-то что-то похожее делали jsp. (и там тоже быстро пришли к выводу - логика в jsp это зло)
источник

OO

Oleksandr Olgashko in pro.jvm
Alexei Vinogradov
Забавный момент. Есть такая вещь - темплейты. Например Apache FreeMarker (ftl), Java. И в этих темплейтах частенько полно логики, которую полезно покрывать юнит тестами.
Как проверить coverage таких тестов? Не нашел сейчас на вскидку инструментов, хотя проблема то довольно общая.

Какие-то идеи?

Ну кроме - "логика в темплейтах - зло".

Для старожилов - когда-то что-то похожее делали jsp. (и там тоже быстро пришли к выводу - логика в jsp это зло)
угумс, пришли, но сейчас логику в реакте именно так и пишут
источник

Э

Эд in pro.jvm
Ребят, вопрос по ATG. Как засетать RepositoryItem через FormHandler поле, которое является другим Repository Item?
источник

A

Artjom Kalita in pro.jvm
гуглинг по ATG выдал в качестве первых вопрос -

Difference between Oracle ATG and Struts? - Stack Overflow

Удачи там тебе, нехворай...
источник

Э

Эд in pro.jvm
Artjom Kalita
гуглинг по ATG выдал в качестве первых вопрос -

Difference between Oracle ATG and Struts? - Stack Overflow

Удачи там тебе, нехворай...
я не вижу связи
источник

A

Artjom Kalita in pro.jvm
Я про то - что это очень специализированный и легаси фреймворк и вероятность что тебе кто то в этом поможет близится к 0, так что все самому
источник

Э

Эд in pro.jvm
Artjom Kalita
Я про то - что это очень специализированный и легаси фреймворк и вероятность что тебе кто то в этом поможет близится к 0, так что все самому
ахуенно!
источник

g

guga in pro.jvm
Чуваки, там через 5 минут будет доклад про кваркус. @olegchir есть анонс? зафигачу пуш
источник