{"id":9933,"date":"2022-08-09T09:11:24","date_gmt":"2022-08-09T07:11:24","guid":{"rendered":"https:\/\/vived.io\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/"},"modified":"2022-09-19T13:10:34","modified_gmt":"2022-09-19T11:10:34","slug":"jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/","title":{"rendered":"JVM Weekly #99 &#8211; M\u00f3j stary to fanatyk teorii garbage collector\u00f3w&#8230;"},"content":{"rendered":"\n<h2 id=\"1-srogi-refactor-g1\" data-num=1>1. Srogi refactor G1<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>M\u00f3j stary to fanatyk teorii garbage collector\u00f3w. P\u00f3\u0142 mieszkania zaj*bane wydaniami \u2019Garbage Collection Algorithms for Automatic Dynamic Memory Management\u2019 i \u2018The Garbage Collection Handbook\u2019, najgorsze. \u015arednio raz w miesi\u0105cu kto\u015b odpali jak\u0105\u015b Springowy Hello World, a tu <code>java.lang.OutOfMemoryError: GC Overhead Limit Exceeded<\/code>, bo si\u0119 bawi\u0142 nowo\u015bciami G1 z inkubacji i trzeba system przywraca\u0107, bo nie mo\u017cna doj\u015b\u0107 do \u0142adu, kt\u00f3re flagi kompilatora i gdzie zmodyfikowa\u0142. W swoim 22 letnim \u017cyciu ju\u017c z 10 razy powtarza\u0142em ten proces, od kiedy JDK wychodzi co p\u00f3\u0142 roku i ci\u0105gle s\u0105 jakie\u015b &#8222;rewolucyjne nowo\u015bci do przetestowania&#8221;. Tydzie\u0144 temu chcia\u0142em po prostu zainstalowa\u0107 patcha security, to system operacyjny od razu zasugerowa\u0142 instalacje &#8222;na \u015bwie\u017co&#8221; xD bo kernel my\u015bla\u0142, \u017ce znowu mi Java nie dzia\u0142a.<\/p><\/blockquote>\n\n\n\n<p>Je\u017celi uto\u017csamiacie si\u0119 z powy\u017cszym i chcecie znale\u017a\u0107 z ojcem wsp\u00f3lny j\u0119zyk, to mam dla Was do polecenia dobr\u0105 publikacj\u0119. Ot\u00f3\u017c okaza\u0142o si\u0119, \u017ce ju\u017c nied\u0142ugo G1 zostanie mocno zmodyfikowany je\u015bli chodzi o internale ca\u0142o\u015bci i mechanizm tak zwanego &#8222;znakowania&#8221; (marking). Takowe w G1 wykorzystuje algorytm snapshot-at-the-beginning(SATB) &#8211; tzn. G1 robi wirtualn\u0105 migawk\u0119 zawarto\u015bci Heapa na pocz\u0105tku ca\u0142ego procesu. Ze wzgl\u0119du na fakt, \u017ce G1 umo\u017cliwia wielow\u0105tkowe &#8222;sprz\u0105tanie&#8221;, na jego potrzeby sporo struktur by\u0142o duplikowane. Tw\u00f3rcom jednak uda\u0142o przerobi\u0107 tak, \u017ce unikn\u0119li niepotrzebnej redundancji, a to wszystko dzi\u0119ki sprytnemu wykorzystaniu zale\u017cno\u015bci mi\u0119dzy ju\u017c istniej\u0105cymi strukturami. Ca\u0142o\u015b\u0107 zosta\u0142a opisana przez autora, Thomasa Schatzla z Oracle w publikacji <a href=\"https:\/\/tschatzl.github.io\/2022\/08\/04\/concurrent-marking.html\">Concurrent Marking in G1<\/a><\/p>\n\n\n\n<p>Co do zalet, pami\u0119\u0107 wykorzystywana do bitmap jest dwukrotnie mniejsza ni\u017c w przypadku istniej\u0105cego mechanizmu: teraz a\u017c 3% Java Heapu b\u0119dzie zarezerwowane na potrzeby G1. Tak\u017ce im wi\u0119ksza ilo\u015b\u0107 pami\u0119ci przeznaczonej na potrzeby JVM, tym wi\u0119cej korzy\u015bci przyniesie migracja. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"270\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-10.gif\" alt=\"\" class=\"wp-image-9024\"\/><figcaption>Zmiany efektywnie wejd\u0105 w \u017cycie wraz z JDK 20.<\/figcaption><\/figure><\/div>\n\n\n<p>A je\u017celi nie zrozumieli\u015bcie niczego z powy\u017cszego posta (i nie ma si\u0119 czego tu wstydzi\u0107 &#8211; mnie r\u00f3wnie\u017c wielokrotnie autor zgubi\u0142 po drodze), to albo musicie zapyta\u0107 wspomnianego we wst\u0119pie fanatyka Garbage Collector\u00f3w, albo zapozna\u0107 si\u0119 ze znacznie przyst\u0119pniejsz\u0105 publikacj\u0105 Micha\u0142a Piotrowskiego prowadz\u0105cego blog Bare.Metal.Dev. Ko\u0144cem zesz\u0142ego roku rozpocz\u0105\u0142 on serie o wdzi\u0119cznej nazwie <a href=\"https:\/\/www.baremetaldev.com\/\">GC Theory<\/a>, w kt\u00f3rej dzieli si\u0119 swoimi notatkami z lektury dw\u00f3ch wspania\u0142ych cegie\u0142: wspomnianych w pa\u015bcie \u2018Garbage Collection Algorithms for Automatic Dynamic Memory Management\u2019 oraz \u2018The Garbage Collection Handbook\u2019, b\u0119d\u0105cych legendarnymi pozycjami je\u015bli chodzi o dzia\u0142ania &#8222;od\u015bmiecaczy.&#8221; Ca\u0142o\u015b\u0107 pozwala spojrze\u0107 na te legendarne pozycje ksi\u0105\u017ckowe mocno Javo-centrycznym okiem Micha\u0142a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/tschatzl.github.io\/2022\/08\/04\/concurrent-marking.html\">Concurrent Marking in G1<\/a><\/li><li><a href=\"https:\/\/www.baremetaldev.com\/\">GC Theory<\/a><\/li><\/ul>\n\n\n\n<h2 id=\"2-release-radar-micronaut-3-6-0\" data-num=2>2. Release Radar: Micronaut 3.6.0<\/h2>\n\n\n\n<p>Drug\u0105 z tegotygodniowich nowo\u015bci jest premiera nowego Micronauta. Co przynosi wydanie <a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Micronaut 3.6.0<\/a>?.<\/p>\n\n\n\n<p>Dopiero co tydzie\u0144 pisa\u0142em o nowym GraalVM, a ten ju\u017c trafi\u0142 do Micronauta. Co prawda tw\u00f3rcy nie chwal\u0105 si\u0119, jakie nowo\u015bci bezpo\u015brednio dla ich frameworka za tym id\u0105, ale ju\u017c sam fakt wprowadzenia poprawek dawanych przez bazowego GraalVM (repozytorium bibliotek \u2764\ufe0f) sprawia, \u017ce u\u017cywaj\u0105cy &#8222;natywnego&#8221; Micronauta nie powinni d\u0142ugo waha\u0107 si\u0119 nad migracj\u0105.<\/p>\n\n\n\n<p>Co jednak dla tych, kt\u00f3rzy nie wskoczyli jeszcze na graalvm-owy wagonik? Dla nich pojawi\u0142 si\u0119 nowy modu\u0142 &#8211; Micronaut Test Resources &#8211; kt\u00f3ry dodaje wsparcie dla zarz\u0105dzania zewn\u0119trznymi zasobami potrzebnymi na potrzeby test\u00f3w. To, co sam modu\u0142 daje, to w zasadzie integracja z Testcontainers, nie wymagaj\u0105ca \u017cadnej dodatkowej konfiguracji. Dzi\u0119ki temu Micronaut sam odpali sobie np. niezb\u0119dn\u0105 instancje bazy danych. Wspierane s\u0105 w zasadzie wszystkie najwa\u017cniejsze systemy &#8211; PostgreSQL, MongoDB, Kafka, Redis czy ElasticSearch, a tak\u017ce wiele innych. Dodatkowo, tw\u00f3rcy dostarczyli dwa pluginy &#8211; jeden do Gradle, drugi do Mavena, umo\u017cliwiaj\u0105cy konfiguracj\u0119 tej funkcjonalno\u015bci.<\/p>\n\n\n\n<p>To w\u0142a\u015bnie integracjami zreszt\u0105 nowe wydanie Micronauta stoi, poniewa\u017c poza powy\u017cszymi tw\u00f3rcy chwal\u0105 si\u0119 kolejnymi dodatkami. Przyk\u0142adowo, Micronaut Tracing dosta\u0142 wsparcie dla formatu OpenTelemetry, dzi\u0119ki czemu z miejsca sta\u0142 si\u0119 kompatybilny z wi\u0119kszo\u015bci\u0105 popularnych rynkowych rozwi\u0105za\u0144. Dodane zosta\u0142o te\u017c wsparcie dla Hibernate Reactive w ramach modu\u0142u Micronaut Data. Umo\u017cliwia on te\u017c wybranie Hibernate Reactive na poziomie generowania projektu. Je\u017celi za\u015b ju\u017c dawno przerzucili\u015bcie si\u0119 na jOOQa, ten te\u017c w ramach nowego wydania zosta\u0142 zaktualizowany do najnowszej wersji &#8211; r\u00f3wnie\u017c pierwszej w pe\u0142ni reaktywnej.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-8.png\" alt=\"\" class=\"wp-image-9026\" width=\"512\" height=\"345\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-8.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-8-300x202.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-8-768x518.png 768w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption>To wierzcho\u0142ek g\u00f3ry lodowej &#8211; nowy Micronaut przynosi naprawd\u0119 olbrzymi\u0105 ilo\u015b\u0107 zmian w swoich modu\u0142ach (cz\u0119sto kosmetycznych, ale nie zawsze). Je\u017celi u\u017cywacie tego frameworka, koniecznie zapoznajcie si\u0119 z pe\u0142nymi <a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Release Notes<\/a>.<\/figcaption><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u0179r\u00f3d\u0142a<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Micronaut Framework 3.6.0 Released<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Jako \u017ce powoli dobijamy setki&#8230; z tej okazji dzisiaj b\u0119dzie pasta! Pos\u0142u\u017cy nam ona jednak do dalszych dywagacji na temat Garbage Collector\u00f3w. Jako bonus &#8211; Micronaut 3.6.0 i jego nowo\u015bci.<\/p>\n","protected":false},"author":10,"featured_media":9019,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-9933","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"3","feature_image_blog":{"ID":9023,"id":9023,"title":"Fanatyk","filename":"Fanatyk.jpeg","filesize":117381,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk.jpeg","link":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/fanatyk-2\/","alt":"","author":"10","description":"","caption":"","name":"fanatyk-2","status":"inherit","uploaded_to":9933,"date":"2022-08-09 05:54:14","modified":"2022-08-10 08:56:33","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/vived.io\/wp-includes\/images\/media\/default.png","width":1200,"height":550,"sizes":{"thumbnail":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk-150x150.jpeg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk-300x138.jpeg","medium-width":300,"medium-height":138,"medium_large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk-768x352.jpeg","medium_large-width":768,"medium_large-height":352,"large":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk-1024x469.jpeg","large-width":1024,"large-height":469,"1536x1536":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk.jpeg","1536x1536-width":1200,"1536x1536-height":550,"2048x2048":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk.jpeg","2048x2048-width":1200,"2048x2048-height":550,"gform-image-choice-sm":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk.jpeg","gform-image-choice-sm-width":300,"gform-image-choice-sm-height":138,"gform-image-choice-md":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk.jpeg","gform-image-choice-md-width":400,"gform-image-choice-md-height":183,"gform-image-choice-lg":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/Fanatyk.jpeg","gform-image-choice-lg-width":600,"gform-image-choice-lg-height":275}},"weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-2.png","feature_image_visible":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Weekly #99 - M\u00f3j stary to fanatyk teorii garbage collector\u00f3w... - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Weekly #99 - M\u00f3j stary to fanatyk teorii garbage collector\u00f3w... - Vived\" \/>\n<meta property=\"og:description\" content=\"Jako \u017ce powoli dobijamy setki... z tej okazji dzisiaj b\u0119dzie pasta! Pos\u0142u\u017cy nam ona jednak do dalszych dywagacji na temat Garbage Collector\u00f3w. Jako bonus - Micronaut 3.6.0 i jego nowo\u015bci.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-09T07:11:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Weekly #99 &#8211; M\u00f3j stary to fanatyk teorii garbage collector\u00f3w&#8230;\",\"datePublished\":\"2022-08-09T07:11:24+00:00\",\"dateModified\":\"2022-09-19T11:10:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\"},\"wordCount\":797,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\",\"name\":\"JVM Weekly #99 - M\u00f3j stary to fanatyk teorii garbage collector\u00f3w... - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png\",\"datePublished\":\"2022-08-09T07:11:24+00:00\",\"dateModified\":\"2022-09-19T11:10:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Weekly #99 &#8211; M\u00f3j stary to fanatyk teorii garbage collector\u00f3w&#8230;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JVM Weekly #99 - M\u00f3j stary to fanatyk teorii garbage collector\u00f3w... - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Weekly #99 - M\u00f3j stary to fanatyk teorii garbage collector\u00f3w... - Vived","og_description":"Jako \u017ce powoli dobijamy setki... z tej okazji dzisiaj b\u0119dzie pasta! Pos\u0142u\u017cy nam ona jednak do dalszych dywagacji na temat Garbage Collector\u00f3w. Jako bonus - Micronaut 3.6.0 i jego nowo\u015bci.","og_url":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/","og_site_name":"Vived","article_published_time":"2022-08-09T07:11:24+00:00","article_modified_time":"2022-09-19T11:10:34+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Weekly #99 &#8211; M\u00f3j stary to fanatyk teorii garbage collector\u00f3w&#8230;","datePublished":"2022-08-09T07:11:24+00:00","dateModified":"2022-09-19T11:10:34+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/"},"wordCount":797,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/","url":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/","name":"JVM Weekly #99 - M\u00f3j stary to fanatyk teorii garbage collector\u00f3w... - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png","datePublished":"2022-08-09T07:11:24+00:00","dateModified":"2022-09-19T11:10:34+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/JVM-1.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-weekly-99-moj-stary-to-fanatyk-teorii-garbage-collectorow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Weekly #99 &#8211; M\u00f3j stary to fanatyk teorii garbage collector\u00f3w&#8230;"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Srogi refactor G1<\/h2>\n","innerContent":["\n<h2>1. Srogi refactor G1<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/quote","attrs":[],"innerBlocks":[],"innerHTML":"\n<blockquote class=\"wp-block-quote\"><p>M\u00f3j stary to fanatyk teorii garbage collector\u00f3w. P\u00f3\u0142 mieszkania zaj*bane wydaniami \u2019Garbage Collection Algorithms for Automatic Dynamic Memory Management\u2019 i \u2018The Garbage Collection Handbook\u2019, najgorsze. \u015arednio raz w miesi\u0105cu kto\u015b odpali jak\u0105\u015b Springowy Hello World, a tu <code>java.lang.OutOfMemoryError: GC Overhead Limit Exceeded<\/code>, bo si\u0119 bawi\u0142 nowo\u015bciami G1 z inkubacji i trzeba system przywraca\u0107, bo nie mo\u017cna doj\u015b\u0107 do \u0142adu, kt\u00f3re flagi kompilatora i gdzie zmodyfikowa\u0142. W swoim 22 letnim \u017cyciu ju\u017c z 10 razy powtarza\u0142em ten proces, od kiedy JDK wychodzi co p\u00f3\u0142 roku i ci\u0105gle s\u0105 jakie\u015b \"rewolucyjne nowo\u015bci do przetestowania\". Tydzie\u0144 temu chcia\u0142em po prostu zainstalowa\u0107 patcha security, to system operacyjny od razu zasugerowa\u0142 instalacje \"na \u015bwie\u017co\" xD bo kernel my\u015bla\u0142, \u017ce znowu mi Java nie dzia\u0142a.<\/p><\/blockquote>\n","innerContent":["\n<blockquote class=\"wp-block-quote\"><p>M\u00f3j stary to fanatyk teorii garbage collector\u00f3w. P\u00f3\u0142 mieszkania zaj*bane wydaniami \u2019Garbage Collection Algorithms for Automatic Dynamic Memory Management\u2019 i \u2018The Garbage Collection Handbook\u2019, najgorsze. \u015arednio raz w miesi\u0105cu kto\u015b odpali jak\u0105\u015b Springowy Hello World, a tu <code>java.lang.OutOfMemoryError: GC Overhead Limit Exceeded<\/code>, bo si\u0119 bawi\u0142 nowo\u015bciami G1 z inkubacji i trzeba system przywraca\u0107, bo nie mo\u017cna doj\u015b\u0107 do \u0142adu, kt\u00f3re flagi kompilatora i gdzie zmodyfikowa\u0142. W swoim 22 letnim \u017cyciu ju\u017c z 10 razy powtarza\u0142em ten proces, od kiedy JDK wychodzi co p\u00f3\u0142 roku i ci\u0105gle s\u0105 jakie\u015b \"rewolucyjne nowo\u015bci do przetestowania\". Tydzie\u0144 temu chcia\u0142em po prostu zainstalowa\u0107 patcha security, to system operacyjny od razu zasugerowa\u0142 instalacje \"na \u015bwie\u017co\" xD bo kernel my\u015bla\u0142, \u017ce znowu mi Java nie dzia\u0142a.<\/p><\/blockquote>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi uto\u017csamiacie si\u0119 z powy\u017cszym i chcecie znale\u017a\u0107 z ojcem wsp\u00f3lny j\u0119zyk, to mam dla Was do polecenia dobr\u0105 publikacj\u0119. Ot\u00f3\u017c okaza\u0142o si\u0119, \u017ce ju\u017c nied\u0142ugo G1 zostanie mocno zmodyfikowany je\u015bli chodzi o internale ca\u0142o\u015bci i mechanizm tak zwanego \"znakowania\" (marking). Takowe w G1 wykorzystuje algorytm snapshot-at-the-beginning(SATB) - tzn. G1 robi wirtualn\u0105 migawk\u0119 zawarto\u015bci Heapa na pocz\u0105tku ca\u0142ego procesu. Ze wzgl\u0119du na fakt, \u017ce G1 umo\u017cliwia wielow\u0105tkowe \"sprz\u0105tanie\", na jego potrzeby sporo struktur by\u0142o duplikowane. Tw\u00f3rcom jednak uda\u0142o przerobi\u0107 tak, \u017ce unikn\u0119li niepotrzebnej redundancji, a to wszystko dzi\u0119ki sprytnemu wykorzystaniu zale\u017cno\u015bci mi\u0119dzy ju\u017c istniej\u0105cymi strukturami. Ca\u0142o\u015b\u0107 zosta\u0142a opisana przez autora, Thomasa Schatzla z Oracle w publikacji <a href=\"https:\/\/tschatzl.github.io\/2022\/08\/04\/concurrent-marking.html\">Concurrent Marking in G1<\/a><\/p>\n","innerContent":["\n<p>Je\u017celi uto\u017csamiacie si\u0119 z powy\u017cszym i chcecie znale\u017a\u0107 z ojcem wsp\u00f3lny j\u0119zyk, to mam dla Was do polecenia dobr\u0105 publikacj\u0119. Ot\u00f3\u017c okaza\u0142o si\u0119, \u017ce ju\u017c nied\u0142ugo G1 zostanie mocno zmodyfikowany je\u015bli chodzi o internale ca\u0142o\u015bci i mechanizm tak zwanego \"znakowania\" (marking). Takowe w G1 wykorzystuje algorytm snapshot-at-the-beginning(SATB) - tzn. G1 robi wirtualn\u0105 migawk\u0119 zawarto\u015bci Heapa na pocz\u0105tku ca\u0142ego procesu. Ze wzgl\u0119du na fakt, \u017ce G1 umo\u017cliwia wielow\u0105tkowe \"sprz\u0105tanie\", na jego potrzeby sporo struktur by\u0142o duplikowane. Tw\u00f3rcom jednak uda\u0142o przerobi\u0107 tak, \u017ce unikn\u0119li niepotrzebnej redundancji, a to wszystko dzi\u0119ki sprytnemu wykorzystaniu zale\u017cno\u015bci mi\u0119dzy ju\u017c istniej\u0105cymi strukturami. Ca\u0142o\u015b\u0107 zosta\u0142a opisana przez autora, Thomasa Schatzla z Oracle w publikacji <a href=\"https:\/\/tschatzl.github.io\/2022\/08\/04\/concurrent-marking.html\">Concurrent Marking in G1<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Co do zalet, pami\u0119\u0107 wykorzystywana do bitmap jest dwukrotnie mniejsza ni\u017c w przypadku istniej\u0105cego mechanizmu: teraz a\u017c 3% Java Heapu b\u0119dzie zarezerwowane na potrzeby G1. Tak\u017ce im wi\u0119ksza ilo\u015b\u0107 pami\u0119ci przeznaczonej na potrzeby JVM, tym wi\u0119cej korzy\u015bci przyniesie migracja. <\/p>\n","innerContent":["\n<p>Co do zalet, pami\u0119\u0107 wykorzystywana do bitmap jest dwukrotnie mniejsza ni\u017c w przypadku istniej\u0105cego mechanizmu: teraz a\u017c 3% Java Heapu b\u0119dzie zarezerwowane na potrzeby G1. Tak\u017ce im wi\u0119ksza ilo\u015b\u0107 pami\u0119ci przeznaczonej na potrzeby JVM, tym wi\u0119cej korzy\u015bci przyniesie migracja. <\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9024,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-10.gif\" alt=\"\" class=\"wp-image-9024\"\/><figcaption>Zmiany efektywnie wejd\u0105 w \u017cycie wraz z JDK 20.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/giphy-10.gif\" alt=\"\" class=\"wp-image-9024\"\/><figcaption>Zmiany efektywnie wejd\u0105 w \u017cycie wraz z JDK 20.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A je\u017celi nie zrozumieli\u015bcie niczego z powy\u017cszego posta (i nie ma si\u0119 czego tu wstydzi\u0107 - mnie r\u00f3wnie\u017c wielokrotnie autor zgubi\u0142 po drodze), to albo musicie zapyta\u0107 wspomnianego we wst\u0119pie fanatyka Garbage Collector\u00f3w, albo zapozna\u0107 si\u0119 ze znacznie przyst\u0119pniejsz\u0105 publikacj\u0105 Micha\u0142a Piotrowskiego prowadz\u0105cego blog Bare.Metal.Dev. Ko\u0144cem zesz\u0142ego roku rozpocz\u0105\u0142 on serie o wdzi\u0119cznej nazwie <a href=\"https:\/\/www.baremetaldev.com\/\">GC Theory<\/a>, w kt\u00f3rej dzieli si\u0119 swoimi notatkami z lektury dw\u00f3ch wspania\u0142ych cegie\u0142: wspomnianych w pa\u015bcie \u2018Garbage Collection Algorithms for Automatic Dynamic Memory Management\u2019 oraz \u2018The Garbage Collection Handbook\u2019, b\u0119d\u0105cych legendarnymi pozycjami je\u015bli chodzi o dzia\u0142ania \"od\u015bmiecaczy.\" Ca\u0142o\u015b\u0107 pozwala spojrze\u0107 na te legendarne pozycje ksi\u0105\u017ckowe mocno Javo-centrycznym okiem Micha\u0142a.<\/p>\n","innerContent":["\n<p>A je\u017celi nie zrozumieli\u015bcie niczego z powy\u017cszego posta (i nie ma si\u0119 czego tu wstydzi\u0107 - mnie r\u00f3wnie\u017c wielokrotnie autor zgubi\u0142 po drodze), to albo musicie zapyta\u0107 wspomnianego we wst\u0119pie fanatyka Garbage Collector\u00f3w, albo zapozna\u0107 si\u0119 ze znacznie przyst\u0119pniejsz\u0105 publikacj\u0105 Micha\u0142a Piotrowskiego prowadz\u0105cego blog Bare.Metal.Dev. Ko\u0144cem zesz\u0142ego roku rozpocz\u0105\u0142 on serie o wdzi\u0119cznej nazwie <a href=\"https:\/\/www.baremetaldev.com\/\">GC Theory<\/a>, w kt\u00f3rej dzieli si\u0119 swoimi notatkami z lektury dw\u00f3ch wspania\u0142ych cegie\u0142: wspomnianych w pa\u015bcie \u2018Garbage Collection Algorithms for Automatic Dynamic Memory Management\u2019 oraz \u2018The Garbage Collection Handbook\u2019, b\u0119d\u0105cych legendarnymi pozycjami je\u015bli chodzi o dzia\u0142ania \"od\u015bmiecaczy.\" Ca\u0142o\u015b\u0107 pozwala spojrze\u0107 na te legendarne pozycje ksi\u0105\u017ckowe mocno Javo-centrycznym okiem Micha\u0142a.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/tschatzl.github.io\/2022\/08\/04\/concurrent-marking.html\">Concurrent Marking in G1<\/a><\/li><li><a href=\"https:\/\/www.baremetaldev.com\/\">GC Theory<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/tschatzl.github.io\/2022\/08\/04\/concurrent-marking.html\">Concurrent Marking in G1<\/a><\/li><li><a href=\"https:\/\/www.baremetaldev.com\/\">GC Theory<\/a><\/li><\/ul>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Release Radar: Micronaut 3.6.0<\/h2>\n","innerContent":["\n<h2>2. Release Radar: Micronaut 3.6.0<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Drug\u0105 z tegotygodniowich nowo\u015bci jest premiera nowego Micronauta. Co przynosi wydanie <a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Micronaut 3.6.0<\/a>?.<\/p>\n","innerContent":["\n<p>Drug\u0105 z tegotygodniowich nowo\u015bci jest premiera nowego Micronauta. Co przynosi wydanie <a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Micronaut 3.6.0<\/a>?.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Dopiero co tydzie\u0144 pisa\u0142em o nowym GraalVM, a ten ju\u017c trafi\u0142 do Micronauta. Co prawda tw\u00f3rcy nie chwal\u0105 si\u0119, jakie nowo\u015bci bezpo\u015brednio dla ich frameworka za tym id\u0105, ale ju\u017c sam fakt wprowadzenia poprawek dawanych przez bazowego GraalVM (repozytorium bibliotek \u2764\ufe0f) sprawia, \u017ce u\u017cywaj\u0105cy \"natywnego\" Micronauta nie powinni d\u0142ugo waha\u0107 si\u0119 nad migracj\u0105.<\/p>\n","innerContent":["\n<p>Dopiero co tydzie\u0144 pisa\u0142em o nowym GraalVM, a ten ju\u017c trafi\u0142 do Micronauta. Co prawda tw\u00f3rcy nie chwal\u0105 si\u0119, jakie nowo\u015bci bezpo\u015brednio dla ich frameworka za tym id\u0105, ale ju\u017c sam fakt wprowadzenia poprawek dawanych przez bazowego GraalVM (repozytorium bibliotek \u2764\ufe0f) sprawia, \u017ce u\u017cywaj\u0105cy \"natywnego\" Micronauta nie powinni d\u0142ugo waha\u0107 si\u0119 nad migracj\u0105.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Co jednak dla tych, kt\u00f3rzy nie wskoczyli jeszcze na graalvm-owy wagonik? Dla nich pojawi\u0142 si\u0119 nowy modu\u0142 - Micronaut Test Resources - kt\u00f3ry dodaje wsparcie dla zarz\u0105dzania zewn\u0119trznymi zasobami potrzebnymi na potrzeby test\u00f3w. To, co sam modu\u0142 daje, to w zasadzie integracja z Testcontainers, nie wymagaj\u0105ca \u017cadnej dodatkowej konfiguracji. Dzi\u0119ki temu Micronaut sam odpali sobie np. niezb\u0119dn\u0105 instancje bazy danych. Wspierane s\u0105 w zasadzie wszystkie najwa\u017cniejsze systemy - PostgreSQL, MongoDB, Kafka, Redis czy ElasticSearch, a tak\u017ce wiele innych. Dodatkowo, tw\u00f3rcy dostarczyli dwa pluginy - jeden do Gradle, drugi do Mavena, umo\u017cliwiaj\u0105cy konfiguracj\u0119 tej funkcjonalno\u015bci.<\/p>\n","innerContent":["\n<p>Co jednak dla tych, kt\u00f3rzy nie wskoczyli jeszcze na graalvm-owy wagonik? Dla nich pojawi\u0142 si\u0119 nowy modu\u0142 - Micronaut Test Resources - kt\u00f3ry dodaje wsparcie dla zarz\u0105dzania zewn\u0119trznymi zasobami potrzebnymi na potrzeby test\u00f3w. To, co sam modu\u0142 daje, to w zasadzie integracja z Testcontainers, nie wymagaj\u0105ca \u017cadnej dodatkowej konfiguracji. Dzi\u0119ki temu Micronaut sam odpali sobie np. niezb\u0119dn\u0105 instancje bazy danych. Wspierane s\u0105 w zasadzie wszystkie najwa\u017cniejsze systemy - PostgreSQL, MongoDB, Kafka, Redis czy ElasticSearch, a tak\u017ce wiele innych. Dodatkowo, tw\u00f3rcy dostarczyli dwa pluginy - jeden do Gradle, drugi do Mavena, umo\u017cliwiaj\u0105cy konfiguracj\u0119 tej funkcjonalno\u015bci.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To w\u0142a\u015bnie integracjami zreszt\u0105 nowe wydanie Micronauta stoi, poniewa\u017c poza powy\u017cszymi tw\u00f3rcy chwal\u0105 si\u0119 kolejnymi dodatkami. Przyk\u0142adowo, Micronaut Tracing dosta\u0142 wsparcie dla formatu OpenTelemetry, dzi\u0119ki czemu z miejsca sta\u0142 si\u0119 kompatybilny z wi\u0119kszo\u015bci\u0105 popularnych rynkowych rozwi\u0105za\u0144. Dodane zosta\u0142o te\u017c wsparcie dla Hibernate Reactive w ramach modu\u0142u Micronaut Data. Umo\u017cliwia on te\u017c wybranie Hibernate Reactive na poziomie generowania projektu. Je\u017celi za\u015b ju\u017c dawno przerzucili\u015bcie si\u0119 na jOOQa, ten te\u017c w ramach nowego wydania zosta\u0142 zaktualizowany do najnowszej wersji - r\u00f3wnie\u017c pierwszej w pe\u0142ni reaktywnej.<\/p>\n","innerContent":["\n<p>To w\u0142a\u015bnie integracjami zreszt\u0105 nowe wydanie Micronauta stoi, poniewa\u017c poza powy\u017cszymi tw\u00f3rcy chwal\u0105 si\u0119 kolejnymi dodatkami. Przyk\u0142adowo, Micronaut Tracing dosta\u0142 wsparcie dla formatu OpenTelemetry, dzi\u0119ki czemu z miejsca sta\u0142 si\u0119 kompatybilny z wi\u0119kszo\u015bci\u0105 popularnych rynkowych rozwi\u0105za\u0144. Dodane zosta\u0142o te\u017c wsparcie dla Hibernate Reactive w ramach modu\u0142u Micronaut Data. Umo\u017cliwia on te\u017c wybranie Hibernate Reactive na poziomie generowania projektu. Je\u017celi za\u015b ju\u017c dawno przerzucili\u015bcie si\u0119 na jOOQa, ten te\u017c w ramach nowego wydania zosta\u0142 zaktualizowany do najnowszej wersji - r\u00f3wnie\u017c pierwszej w pe\u0142ni reaktywnej.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":9026,"width":512,"height":345,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-8.png\" alt=\"\" class=\"wp-image-9026\" width=\"512\" height=\"345\"\/><figcaption>To wierzcho\u0142ek g\u00f3ry lodowej - nowy Micronaut przynosi naprawd\u0119 olbrzymi\u0105 ilo\u015b\u0107 zmian w swoich modu\u0142ach (cz\u0119sto kosmetycznych, ale nie zawsze). Je\u017celi u\u017cywacie tego frameworka, koniecznie zapoznajcie si\u0119 z pe\u0142nymi <a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Release Notes<\/a>.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/08\/image-8.png\" alt=\"\" class=\"wp-image-9026\" width=\"512\" height=\"345\"\/><figcaption>To wierzcho\u0142ek g\u00f3ry lodowej - nowy Micronaut przynosi naprawd\u0119 olbrzymi\u0105 ilo\u015b\u0107 zmian w swoich modu\u0142ach (cz\u0119sto kosmetycznych, ale nie zawsze). Je\u017celi u\u017cywacie tego frameworka, koniecznie zapoznajcie si\u0119 z pe\u0142nymi <a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Release Notes<\/a>.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":3},"innerBlocks":[],"innerHTML":"\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n","innerContent":["\n<h3>\u0179r\u00f3d\u0142a<\/h3>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/list","attrs":[],"innerBlocks":[],"innerHTML":"\n<ul><li><a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Micronaut Framework 3.6.0 Released<\/a><\/li><\/ul>\n","innerContent":["\n<ul><li><a href=\"https:\/\/micronaut.io\/2022\/08\/04\/micronaut-framework-3-6-0-released\/\">Micronaut Framework 3.6.0 Released<\/a><\/li><\/ul>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9933","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=9933"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9933\/revisions"}],"predecessor-version":[{"id":10459,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/9933\/revisions\/10459"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/9019"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=9933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=9933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=9933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}