{"id":2088,"date":"2015-10-22T14:57:23","date_gmt":"2015-10-22T14:57:22","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2088"},"modified":"2022-12-15T19:21:14","modified_gmt":"2022-12-16T03:21:14","slug":"all-the-small-things-jvm-profiling-lessons-from-the-trenches","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/","title":{"rendered":"\ubaa8\ub4e0 \uc791\uc740 \uac83\ub4e4 - \ucc38\ud638\uc5d0\uc11c \uc5bb\uc740 JVM \ud504\ub85c\ud30c\uc77c\ub9c1 \uad50\ud6c8"},"content":{"rendered":"<p><a href=\"https:\/\/openjdk.java.net\/projects\/code-tools\/jmh\/\">JMH(Java \ub9c8\uc774\ud06c\ub85c\ubca4\uce58\ub9c8\ud0b9 \ud558\ub124\uc2a4)<\/a> \ub294 Couchbase Java SDK \ubc0f \uad00\ub828 \ud504\ub85c\uc81d\ud2b8 \ub0b4\uc5d0\uc11c \uc131\ub2a5 \ucd5c\uc801\ud654\ub97c \uc815\ub7c9\ud654(\uad81\uadf9\uc801\uc73c\ub85c\ub294 \uc815\ub2f9\ud654)\ud558\ub294 \ub370 \ub9e4\uc6b0 \uc720\uc6a9\ud55c \ub3c4\uad6c \uc911 \ud558\ub098\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub9ce\uc740 \uc0ac\uc6a9\uc790\uc640 \uace0\uac1d\uc774 \ube44\uc2b7\ud55c \uc9c8\ubb38\uc73c\ub85c \uc5b4\ub824\uc6c0\uc744 \uacaa\uace0 \uc788\ub294 \uac83\uc744 \ubcf4\uc558\uae30 \ub54c\ubb38\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \ubc29\ubc95\uc744 \uc18c\uac1c\ud558\ub294 \uac83\uc774 \uc88b\uaca0\ub2e4\uace0 \uc0dd\uac01\ud588\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.oracle.com\/technetwork\/java\/javaseproducts\/mission-control\/java-mission-control-1998576.html\">JMC(Java \ubbf8\uc158 \ucee8\ud2b8\ub864)<\/a> \ub97c JMH\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\uba74 \ucd94\uce21\uc774 \uc544\ub2cc \uc2e4\uc81c \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud504\ub85c\ud30c\uc77c\ub9c1 \ubc0f JMC \uc131\ub2a5 \ucd5c\uc801\ud654 \ud14c\uc2a4\ud2b8 \uacb0\uc815\uc744 \ub0b4\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub0e5 \ub530\ub77c \uc77d\uc73c\uba74\uc11c \uc18c\uc2a4 \ucf54\ub4dc\ub97c \ucc14\ub7ec\ubcfc \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uc81c\uac00 \ubcf4\uc5ec\ub4dc\ub9b4 \ub0b4\uc6a9\uc744 \uc7ac\ud604\ud558\ub824\uba74 \ucd5c\uc2e0 Oracle JDK(JMH\uc758 \uacbd\uc6b0 1.8.0_51\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4)\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \ub610\ud55c \ud504\ub85c\uc81d\ud2b8\ub97c IDE\ub85c \uac00\uc838\uc624\ub294 \ubc29\ubc95\uacfc \uac19\uc740 \uc0ac\uc18c\ud55c \uc138\ubd80 \uc0ac\ud56d\uc740 \ubaa8\ub450 \ubcf4\uc5ec\ub4dc\ub9ac\uc9c0 \uc54a\uaca0\uc2b5\ub2c8\ub2e4. Java \uc131\ub2a5 \ud504\ub85c\ud30c\uc77c\ub9c1\uc758 \uae30\ubcf8\uc5d0 \uc5b4\ub824\uc6c0\uc744 \uacaa\uace0 \uacc4\uc2e0\ub2e4\uba74 \uc774 \ud3ec\uc2a4\ud305\uc774 \uc801\ud569\ud558\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub300\ubd80\ubd84\uc758 \uc2e4\uc81c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \ubb38\uc81c\uc810\uc740 \ub69c\ub837\ud55c \ud574\uacb0 \ubc29\ubc95\uc774 \uc5c6\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \ubb34\uc5b8\uac00\ub97c \ubc1c\uacac\ud558\uba74 \uc2a4\uc2a4\ub85c\ub97c \ud1a0\ub2e5\uc774\uba70 \uace0\uce60 \uc218 \uc788\ub294 \uae30\ud68c\ub294 \ub4dc\ubb45\ub2c8\ub2e4. \ub354 \ub098\uc740 \uacb0\uacfc\ub97c \uc5bb\uae30 \uc704\ud574 \ub9ce\uc740 \uc791\uc740 \uac1c\uc120\uc774 \ud544\uc694\ud55c \uacbd\uc6b0\uac00 \ub9ce\uc2b5\ub2c8\ub2e4. Java SDK\uc5d0\uc11c\ub294 \uc9c0\uc5f0 \uc2dc\uac04\uc744 \ucd5c\ub300\ud55c \ucd5c\uc18c\ud654\ud558\uba74\uc11c \ucc98\ub9ac\ub7c9\uc744 \ub298\ub9ac\ub294 \ub370 \uc911\uc810\uc744 \ub461\ub2c8\ub2e4. \ub450 \uc18d\uc131\uc740 \uc11c\ub85c\ub97c \ud2b9\ubcc4\ud788 \uc88b\uc544\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ub450 \uac00\uc9c0\ub97c \ub3d9\uc2dc\uc5d0 \ub9cc\uc871\uc2dc\ud0ac \uc218 \uc788\ub294 \ubc29\ubc95\uc740 \uba87 \uac00\uc9c0 \ubc16\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4:<\/p>\n<ol>\n<li>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uacc4\uc0b0\uc5d0 \ud544\uc694\ud55c CPU \uc0ac\uc6a9\ub7c9 \uc904\uc774\uae30<\/li>\n<li>\uacbd\ud569 \ubc0f \ub3d9\uae30\ud654 \uc9c0\uc810 \ucd5c\uc18c\ud654<\/li>\n<li>GC\uc758 \uc791\uc5c5\uc744 \uc904\uc774\uae30 \uc704\ud574 \uc624\ube0c\uc81d\ud2b8 \ud560\ub2f9\uc744 \ud53c\ud558\uc138\uc694.<\/li>\n<\/ol>\n<p>\uc774 \uc608\uc81c\uc5d0\uc11c\ub294 3\ubc88(\uadf8\ub9ac\uace0 1\ubc88)\uc774 \uc791\ub3d9\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. core-io \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc2e4\ud589\ud574 \ubcf4\uc558\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\uc81c \uac15\uc5f0\uc744 \ubcf4\uc2e0 \uc801\uc774 \uc788\uc73c\uc2dc\ub2e4\uba74, \uc800\ub294 \ud56d\uc0c1 \uc774\ub7f0 \uac83\uc740 \uc801\uc808\ud55c \ubca4\uce58\ub9c8\ud06c\uac00 \uc544\ub2c8\ub77c\uace0 \ub9d0\uc500\ub4dc\ub9ac\ub294\ub370, \uc65c \uc5ec\uae30\uc11c \ubca4\uce58\ub9c8\ud0b9\uc744 \ud558\ub294 \uac78\uae4c\uc694? \uac00\uc7a5 \ud070 \ucc28\uc774\uc810\uc740 \uc0ac\uc6a9\uc790\ub85c\uc11c Couchbase \uc804\uccb4\ub97c \ubca4\uce58\ub9c8\ud0b9\ud560 \ub54c\ub294 \ud504\ub85c\ub355\uc158 \uc2dc\uc2a4\ud15c\uc744 \ubaa8\ubc29\ud558\ub294 \ud604\uc2e4\uc801\uc778 \uc6cc\ud06c\ub85c\ub4dc\uac00 \uc544\ub2c8\ub77c\ub294 \uc810\uc785\ub2c8\ub2e4. \ub77c\uc774\ube0c\ub7ec\ub9ac \uac1c\ubc1c\uc790\ub85c\uc11c \uc800\ub294 \ud56b \ucf54\ub4dc \uacbd\ub85c\ub97c \ucc3e\uc544\uc11c \ub354 \ube60\ub974\uac8c \ub9cc\ub4e4\uace0 \uc2f6\uae30 \ub54c\ubb38\uc5d0 \ub3d9\uc77c\ud55c \ucf54\ub4dc\ub97c \ubc18\ubcf5\ud574\uc11c \uc2e4\ud589\ud558\uba74 JVM(Java) \ud504\ub85c\ud30c\uc77c\ub7ec\uc5d0\uc11c \ud574\ub2f9 \uacbd\ub85c\uac00 \ub354 \uc798 \ub178\ucd9c\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub85c\uceec Couchbase Server \ub178\ub4dc\uc5d0\uc11c \uc774 \ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\uba74 \uc57d 9\ucc9c \uc791\uc5c5\/\ucd08\uac00 \ub098\uc635\ub2c8\ub2e4. \uc774 \uc2dc\uc810\uc5d0\uc11c \ucc98\ub9ac\ub7c9\uc744 \ub298\ub9ac\ub294 \ub370\ub294 \uad00\uc2ec\uc774 \uc5c6\uace0, \uc560\ucd08\uc5d0 \ud56b \ucf54\ub4dc \uacbd\ub85c\uc5d0\uc11c \uac1d\uccb4 \ud560\ub2f9\uc744 \uc904\uc774\ub824\uace0 \ud569\ub2c8\ub2e4. JMC\ub97c \uc2dc\uc791\ud558\uace0 JFR(Java Flight Recorder)\uc744 \ud1b5\ud574 JVM\uc744 \uac00\ub9ac\ud0a8 \ub2e4\uc74c \ud504\ub85c\ud30c\uc77c\ub9c1\ud558\ub294 \ub3d9\uc548 \uba38\uc2e0\uc744 5\ubd84 \ub3d9\uc548 \uadf8\ub300\ub85c \ub450\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\uac00 \ub098\uc654\uc2b5\ub2c8\ub2e4:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/all-the-small-things---jvm-profiling-lessons-from-the-trenches\/allocations-before.png\" \/><\/p>\n<p>\ud0a4\uac12 \uc0c1\ud0dc[] \uac1d\uccb4\uc5d0\ub294 5\ubd84 \ub3d9\uc548 400MB\uac00 \ud560\ub2f9\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc774\uac83\uc774 \ubd84\uba85\ud558\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\uc9c0\ub9cc \ucd5c\uadfc\uc5d0 \ud574\ub2f9 \ucf54\ub4dc \uacbd\ub85c\uc5d0\uc11c \ubb34\uc5b8\uac00\ub97c \ubcc0\uacbd\ud588\ub2e4\ub294 \uac83\uc744 \uc54c\uace0 \uc788\uc2b5\ub2c8\ub2e4( <a href=\"https:\/\/github.com\/couchbase\/couchbase-jvm-core\/commit\/7e63fe3b445ebe131b910f3dff2647c5f5414d02\"> \uc5ec\uae30<\/a>) \uadf8\ub9ac\uace0 \uc774\ub7f0 \uc720\ud615\uc758 \ubc30\ubd84\uc740 \uc804\uc5d0\ub294 \ubcf8 \uc801\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \ube60\ub978 \uc870\uc0ac \ub05d\uc5d0 \uc6a9\uc758\uc790\uac00 \ub2e4\uc74c\uacfc \uac19\uc740 \ucf54\ub4dc \uacbd\ub85c\uc5d0 \uc788\ub2e4\ub294 \uac83\uc774 \ubd84\uba85\ud574\uc84c\uc2b5\ub2c8\ub2e4(JFR\uc774 \uc6b0\ub9ac\ub97c \uc62c\ubc14\ub978 \uc7a5\uc18c\ub85c \uc548\ub0b4\ud558\ub294 \ubc29\ubc95\uc5d0 \uc8fc\ubaa9\ud558\uc138\uc694):<\/p>\n<p>\uc751\ub2f5\uc774 \ub3c4\ucc29\ud560 \ub54c\ub9c8\ub2e4 KeyValueStatus \uc5f4\uac70\ud615\uacfc \uc77c\uce58\uc2dc\ucf1c \uc801\uc808\ud55c \uc751\ub2f5 \uc0c1\ud0dc\ub97c \uc124\uc815\ud569\ub2c8\ub2e4. \uc81c \ub3d9\ub8cc \uc911 \ud55c \uba85\uc774 \ub9ac\ud329\ud1a0\ub9c1\ud558\ub294 \ub3d9\uc548 \ucf54\ub4dc\ub97c \ubcf4\uae30 \uc88b\uac8c \ub9cc\ub4e4\uc5c8\uc9c0\ub9cc, GC \uc624\ubc84\ud5e4\ub4dc\uac00 \ub9e4\uc6b0 \ubbf8\ubb18\ud558\uac8c \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ud504\ub85c\ud30c\uc77c\ub9c1 \uc815\ubcf4\uc5d0\uc11c \ubcfc \uc218 \uc788\ub4ef\uc774 values()\ub294 \ud56d\uc0c1 \ubc30\uc5f4\uc744 \uc0dd\uc131\ud558\ubbc0\ub85c \uc774\ub97c \ubc18\ubcf5\ud558\uc5ec \uc77c\uce58\ud558\ub294 \ucf54\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub9ce\uc9c0\ub294 \uc54a\uc9c0\ub9cc \uc2dc\uac04\uc774 \uc9c0\ub0a8\uc5d0 \ub530\ub77c \ud569\uc0b0\ub429\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uac00\uc7a5 \uc911\uc694\ud55c \uac83\uc740 \ubd88\ud544\uc694\ud55c \uc4f0\ub808\uae30\uac00 \ubc1c\uc0dd\ud55c\ub2e4\ub294 \uc810\uc785\ub2c8\ub2e4.<\/p>\n<p>\uacb0\uacfc\uc801\uc73c\ub85c \uc77c\ubd80 \uc751\ub2f5\uc740 \ub2e4\ub978 \uc751\ub2f5\ubcf4\ub2e4 \ubc1c\uc0dd\ud560 \uac00\ub2a5\uc131\uc774 (\ud6e8\uc52c) \ub192\uc73c\ubbc0\ub85c \uc77c\ubc18\uc801\uc778 \uacbd\uc6b0\uc5d0 \ucd5c\uc801\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4(\ud56d\uc0c1 \uc88b\uc740 \uc0dd\uac01\uc785\ub2c8\ub2e4). \ubaa8\ub4e0 \ub0ae\uc740 \uc218\uc900\uc758 \ub0b4\uc6a9\uc744 \uc9c0\ub8e8\ud558\uac8c \uc124\uba85\ud558\uc9c0\ub294 \uc54a\uaca0\uc9c0\ub9cc, \uc77c\ubc18\uc801\uc73c\ub85c GET\uc758 \uacbd\uc6b0 \ubb38\uc11c\uac00 \uc874\uc7ac\ud558\uba74 SUCCESS\ub97c \ubc18\ud658\ud558\uace0 \ubb38\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc73c\uba74 NOT_FOUND\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc6b0\ub9ac\uac00 \ud560 \uc218 \uc788\ub294 \ud55c \uac00\uc9c0\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\ucf54\ub4dc\ub97c \ubcc0\uacbd\ud558\uace0 JFR\uc744 \ub2e4\uc2dc \uc2e4\ud589\ud558\uba74 \ubc30\uc5f4 \ud560\ub2f9\uc774 \uc0ac\ub77c\uc9d1\ub2c8\ub2e4:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/all-the-small-things---jvm-profiling-lessons-from-the-trenches\/allocations-after.png\" \/><\/p>\n<p>\ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \uac1c\ubc1c\uc790\ub294 \uc774 \uc9c0\uc810\uc5d0\uc11c \uba48\ucd94\ub294 \uacbd\ud5a5\uc774 \uc788\uc9c0\ub9cc, \uacc4\uc18d \uc77d\uc5b4\ubcf4\uc2dc\uae30\ub97c \uad8c\ud569\ub2c8\ub2e4. \ubc30\uc5f4 \ud560\ub2f9\uc744 \ud53c\ud588\ub2e4\uace0 \ud574\uc11c(\uc774\ub294 \uc88b\uc740 \uc77c\uc785\ub2c8\ub2e4) \uc18d\ub3c4\uac00 \ube68\ub77c\uc9c0\ub294 \uac83\uc740 \uc544\ub2c8\uc8e0? \uc77c\ubc18\uc801\uc73c\ub85c\ub294 \uadf8\ub807\uac8c \ubbff\uaca0\uc9c0\ub9cc, \uc800\ub294 \uacfc\uac70\uc5d0 \uadf8\ub807\uac8c \ubbff\uae30\uc5d0\ub294 \ub108\ubb34 \ub9ce\uc774 \ub180\ub790\ub358 \uc801\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc124\ub839 \uc6b0\ub9ac\uac00 \uc633\ub2e4\uace0 \ud558\ub354\ub77c\ub3c4, \ube60\ub978 JMH \ub9c8\uc774\ud06c\ub85c \ubca4\uce58\ub9c8\ud06c\ub97c \ud1b5\ud574 \uc54c\uc544\ubcf4\ub294 \uac83\uc740 \uc88b\uc740 \uc77c\uc785\ub2c8\ub2e4. \ub610\ud55c \uc774\ubbf8 \ud655\uc778\ud55c N\u00b03\ubfd0\ub9cc \uc544\ub2c8\ub77c \uc704\uc5d0\uc11c \uc5b8\uae09\ud55c N\u00b01\uc5d0 \ub300\ud55c \uac1c\uc120 \uc0ac\ud56d\uc744 \uc815\ub7c9\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>JMH\ub294 OpenJDK \ud504\ub85c\uc81d\ud2b8\uc758 \uc77c\ubd80\uc774\uba70 \uc0ac\uc6a9\ud558\uae30 \uc5b4\ub835\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud648\ud398\uc774\uc9c0\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\ub294 mvn archetype:generate \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud504\ub85c\uc81d\ud2b8\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc2a4\ucf08\ub808\ud1a4 \ud504\ub85c\uc81d\ud2b8\uac00 \uc0dd\uc131\ub418\uba74 Java SDK\ub97c \uc885\uc18d\uc131\uc73c\ub85c \ucd94\uac00\ud558\uac70\ub098(\uc790\ub3d9\uc73c\ub85c \uc100\ub3c4 \ucc98\ub9ac\ub428) \uc5f4\uac70\ud615\ub9cc \ubcf5\uc0ac\ud558\ub294 \ub450 \uac00\uc9c0 \uc120\ud0dd\uc9c0\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8\uc758 \uaddc\ubaa8\uc640 \ud14c\uc2a4\ud2b8\ud558\ub824\ub294 \ud56d\ubaa9\uc5d0 \ub530\ub77c \ub458 \uc911 \ud558\ub098\ub97c \uc120\ud0dd\ud558\uba74 \ub429\ub2c8\ub2e4. \ud604\uc7ac \ud14c\uc2a4\ud2b8\ub294 \ub3c5\ub9bd\ud615\uc774\ubbc0\ub85c \uc5f4\uac70\ud615\uc744 \ud504\ub85c\uc81d\ud2b8\uc5d0 \ubcf5\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc9c4\ud589\ud558\uba74\uc11c \uc218\uc815\ud558\uace0 \uc0c8\ub85c\uc6b4 \uba54\uc11c\ub4dc\ub97c \ucd94\uac00\ud558\uc5ec \uc5ec\ub7ec \uac00\uc9c0\ub97c \uc2dc\ub3c4\ud574 \ubcfc \uc218 \uc788\ub2e4\ub294 \uc774\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>2.2.0 \ubc84\uc804\uc5d0\uc11c KeyValueStatus \ud074\ub798\uc2a4\ub97c \ubcf5\uc0ac\ud558\uc5ec \ub450 \uac00\uc9c0 \ubcc0\ud615\uc744 \ub3d9\uc2dc\uc5d0 \ud638\ucd9c\ud560 \uc218 \uc788\ub3c4\ub85d \ucf54\ub4dc\ub97c \ubcc0\uacbd\ud588\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\uc774\uc81c (\uac04\ub2e8\ud55c) JMH \ubca4\uce58\ub9c8\ud06c\ub97c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\ub2e4\uc74c\uc73c\ub85c \ucf54\ub4dc\ub97c \ucef4\ud30c\uc77c\ud558\uace0 \uba85\ub839\uc904\uc5d0\uc11c \uc2e4\ud589\ud569\ub2c8\ub2e4. \uba3c\uc800 \"mvn clean install\"\uc744 \uc2e4\ud589\ud55c \ub2e4\uc74c \"java -jar target\/benchmarks.jar -wi 10 -f1 -i 10 -bm avgt -tu ns\"\ub97c \ud1b5\ud574 \uc2dc\uc791\ud558\uc138\uc694.<\/p>\n<p>\ub108\ubb34 \ub09c\ud574\ud558\uac8c \ub290\uaef4\uc9c4\ub2e4\uba74 \ud3c9\uade0 \uc9c0\uc5f0 \uc2dc\uac04\uc744 \ub098\ub178\ucd08 \ub2e8\uc704\ub85c \uce21\uc815\ud558\uace0 \ud558\ub098\uc758 \ud3ec\ud06c\uc5d0\uc11c 10\ud68c\uc758 \uc6cc\ubc0d\uc5c5 \ubc18\ubcf5\uacfc 10\ud68c\uc758 \uce21\uc815 \ubc18\ubcf5\uc744 \uc218\ud589\ud55c\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4. \uad81\uae08\ud558\uc2e0\uac00\uc694? \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\ubaa8\ub4e0 \uc5f0\uc0b0\uc740 \ub098\ub178\ucd08 \ubbf8\ub9cc\uc758 \ubc94\uc704\uc5d0\uc11c \uc774\ub8e8\uc5b4\uc9c0\ubbc0\ub85c JVM\uc740 \ub8e8\ud504\ub97c \ucd5c\uc801\ud654\ud558\ub294 \ub370 \ub9e4\uc6b0 \ud6a8\uacfc\uc801\uc774\uc9c0\ub9cc \ub2e8\uc21c\ud55c \ube44\uad50 \ubc0f \ubc18\ud658 \uc5f0\uc0b0\uc744 \ub2a5\uac00\ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4. \ucd5c\uc801\ud654\ub41c \ucf54\ub4dc\uc5d0\ub294 \ud3f4\ubc31\uc774 \uc788\uc73c\ubbc0\ub85c \ucf54\ub4dc 134\uc5d0\uc11c \ub8e8\ud504\ub85c \ub418\ub3cc\uc544\uac00\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \"\uc6d0\ub798\" \uc2e4\ud589\uc5d0\uc11c \ucd94\uac00\ub85c \ubcfc \uc218 \uc788\ub294 \uac83\uc740 \ub8e8\ud504\ub97c \ubc18\ubcf5\ud558\uba74 \uc5f4\uac70\ud615\uc5d0\uc11c \uc694\uc18c\uac00 \ubc30\uce58\ub418\ub294 \uc704\uce58\ub3c4 \uc911\uc694\ud558\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. 0\uacfc 1\uc740 \uac70\uc758 \ub9e8 \uc704\uc5d0 \uc788\ub294 \ubc18\uba74 134\ub294 \ub9e8 \uc544\ub798\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc77c\ubc18\uc801\uc778 \uacbd\uc6b0\uc758 \uc21c\uc11c\ub97c \ub2e4\uc2dc \uc9c0\uc815\ud558\ub294 \uac83\ub3c4 \uc758\ubbf8\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub530\ub77c\uc11c \uc9c0\uae08\ucbe4\uc774\uba74 \uc774\ub7ec\ud55c \ubcc0\ud654\ub97c \uad6c\ud604\ud558\ub294 \uac83\uc774 \ud569\ub9ac\uc801\uc774\ub77c\uace0 \ud655\uc2e0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud560\ub2f9\ub7c9\uc774 \uc904\uc5b4\ub4e4\uace0 \uc2e4\ud589 \uc18d\ub3c4\uac00 \ube68\ub77c\uc9d1\ub2c8\ub2e4. \ub610\ud55c \ucf54\ub4dc\uac00 \ub354 \ubcf5\uc7a1\ud574\uc9c0\uc9c0\ub3c4 \uc54a\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc2e4\uc81c\ub85c\ub294 \uc774 \ub450 \uac00\uc9c0\ub85c\ub294 \ucda9\ubd84\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ucd5c\uc801\ud654\ub41c \uacbd\ub85c\uc5d0 \ub354 \ub9ce\uc740 \ucf54\ub4dc\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uae34 \uc5f4\uac70\ud615 \ubaa9\ub85d\uc5d0\uc11c \ubcf4\uba74 \uadf8\ub807\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>\uc131\uacf5<\/li>\n<li>ERR_NOT_FOUND<\/li>\n<li>ERR_EXISTS<\/li>\n<li>err_not_my_vbucket<\/li>\n<li>ERR_BUSY<\/li>\n<li>ERR_TOO_BIG<\/li>\n<li>ERR_TEMP_FAIL<\/li>\n<\/ul>\n<p>\ub9c8\uc9c0\ub9c9 \ud55c \uac00\uc9c0 \uc9c8\ubb38\uc5d0 \ub300\ud55c \ub2f5\uc774 \ub0a8\uc544 \uc788\uc2b5\ub2c8\ub2e4. if\/elseif\ub97c \uc0ac\uc6a9\ud574\uc57c \ud560\uae4c\uc694, \uc544\ub2c8\uba74 \ub2e8\uc21c\ud55c switch() \ube14\ub85d\uc744 \uc0ac\uc6a9\ud574\uc57c \ud560\uae4c\uc694? \uadf8\uac8c \uc804\ud600 \uc911\uc694\ud560\uae4c\uc694? JMH \ubca4\uce58\ub9c8\ud06c\uac00 \ud558\ub098 \ub354 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\uc774\uc81c \ube60\ub978 \uacbd\ub85c \ucf54\ub4dc\uc5d0 \uc138 \uac00\uc9c0 \ub9e4\uac1c\ubcc0\uc218\ub97c \ubaa8\ub450 \ud3ec\ud568\ud588\uae30 \ub54c\ubb38\uc5d0 \ub354 \uc774\uc0c1 \uc774\uc0c1\uac12\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc0ac\uc6a9 \uc0ac\ub840\uc5d0\uc11c \uc2e4\uc9c8\uc801\uc778 \ucc28\uc774\uac00 \uc804\ud600 \uc5c6\ub2e4\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c case\uc640 if\/else \ubaa8\ub450 \uc798 \uc791\ub3d9\ud558\uba70 \uc120\ud638\ub3c4\uc640 \ucf54\ub4dc \uba85\ud655\uc131\uc5d0 \ub530\ub77c \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc624\ub298\uc740 \uc5ec\uae30\uae4c\uc9c0\uc785\ub2c8\ub2e4! \ubb34\uc791\uc815 \ucd94\uce21\ud558\ub294 \ub300\uc2e0 \uad50\uc721\uc801\uc778 \uce21\uc815\uc744 \uc704\ud574 JMH \ubc0f JFR\uacfc \uac19\uc740 \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uba74 \uac1d\uccb4 \ud560\ub2f9\uc744 \uc904\uc774\uace0 \ubd80\uc218\uc801\uc73c\ub85c \ucf54\ub4dc\ub97c \ub354 \ube60\ub974\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84 \ubaa8\ub450 \uc990\uac70\uc6b4 \ud574\ud0b9\uacfc \uacbd\uc7c1 \uc870\uac74\uc774 \uc5c6\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>","protected":false},"excerpt":{"rendered":"<p>JMH (Java Microbenchmarking Harness) has become one of my invaluable tools to quantify (and ultimately justify) a performance optimization inside the Couchbase Java SDK and its related projects. Since I see many users and customers struggling with similar questions, I [&hellip;]<\/p>","protected":false},"author":19,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8987],"class_list":["post-2088","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JVM Profiling | JMH (Java) Performance + Benchmark Testing<\/title>\n<meta name=\"description\" content=\"Reduce object allocations and making code faster as a side effect by using tools like JMH and JFR for educated measurements instead of wild guessing.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"All The Small Things - JVM Profiling Lessons From The Trenches\" \/>\n<meta property=\"og:description\" content=\"Reduce object allocations and making code faster as a side effect by using tools like JMH and JFR for educated measurements instead of wild guessing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-22T14:57:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-16T03:21:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Michael Nitschinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daschl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Nitschinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\"},\"author\":{\"name\":\"Michael Nitschinger\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\"},\"headline\":\"All The Small Things &#8211; JVM Profiling Lessons From The Trenches\",\"datePublished\":\"2015-10-22T14:57:22+00:00\",\"dateModified\":\"2022-12-16T03:21:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\"},\"wordCount\":1307,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\",\"name\":\"JVM Profiling | JMH (Java) Performance + Benchmark Testing\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-10-22T14:57:22+00:00\",\"dateModified\":\"2022-12-16T03:21:14+00:00\",\"description\":\"Reduce object allocations and making code faster as a side effect by using tools like JMH and JFR for educated measurements instead of wild guessing.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"All The Small Things &#8211; JVM Profiling Lessons From The Trenches\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\",\"name\":\"Michael Nitschinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"caption\":\"Michael Nitschinger\"},\"description\":\"Michael Nitschinger works as a Principal Software Engineer at Couchbase. He is the architect and maintainer of the Couchbase Java SDK, one of the first completely reactive database drivers on the JVM. He also authored and maintains the Couchbase Spark Connector. Michael is active in the open source community, a contributor to various other projects like RxJava and Netty.\",\"sameAs\":[\"https:\/\/nitschinger.at\",\"https:\/\/x.com\/daschl\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/michael-nitschinger\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JVM Profiling | JMH (Java) Performance + Benchmark Testing","description":"Reduce object allocations and making code faster as a side effect by using tools like JMH and JFR for educated measurements instead of wild guessing.","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:\/\/www.couchbase.com\/blog\/ko\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/","og_locale":"ko_KR","og_type":"article","og_title":"All The Small Things - JVM Profiling Lessons From The Trenches","og_description":"Reduce object allocations and making code faster as a side effect by using tools like JMH and JFR for educated measurements instead of wild guessing.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-10-22T14:57:22+00:00","article_modified_time":"2022-12-16T03:21:14+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Michael Nitschinger","twitter_card":"summary_large_image","twitter_creator":"@daschl","twitter_misc":{"Written by":"Michael Nitschinger","Est. reading time":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/"},"author":{"name":"Michael Nitschinger","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d"},"headline":"All The Small Things &#8211; JVM Profiling Lessons From The Trenches","datePublished":"2015-10-22T14:57:22+00:00","dateModified":"2022-12-16T03:21:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/"},"wordCount":1307,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/","url":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/","name":"JVM Profiling | JMH (Java) Performance + Benchmark Testing","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-10-22T14:57:22+00:00","dateModified":"2022-12-16T03:21:14+00:00","description":"Reduce object allocations and making code faster as a side effect by using tools like JMH and JFR for educated measurements instead of wild guessing.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/all-the-small-things-jvm-profiling-lessons-from-the-trenches\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"All The Small Things &#8211; JVM Profiling Lessons From The Trenches"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d","name":"\ub9c8\uc774\ud074 \ub2c8\uce6d\uac70","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b","url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","caption":"Michael Nitschinger"},"description":"\ub9c8\uc774\ud074 \ub2c8\uce6d\uc5b4\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\ub85c \uc77c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub294 JVM\uc5d0\uc11c \ucd5c\ucd08\uc758 \uc644\uc804 \ubc18\uc751\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84 \uc911 \ud558\ub098\uc778 Couchbase Java SDK\uc758 \uc124\uacc4\uc790\uc774\uc790 \uc720\uc9c0 \uad00\ub9ac\uc790\uc785\ub2c8\ub2e4. \ub610\ud55c Couchbase Spark Connector\ub97c \uc791\uc131\ud558\uace0 \uc720\uc9c0 \uad00\ub9ac\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. Michael\uc740 \uc624\ud508 \uc18c\uc2a4 \ucee4\ubba4\ub2c8\ud2f0\uc5d0\uc11c \ud65c\ubc1c\ud788 \ud65c\ub3d9 \uc911\uc774\uba70, RxJava \ubc0f Netty\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uae30\uc5ec\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/michael-nitschinger\/"}]}},"authors":[{"term_id":8987,"user_id":19,"is_guest":0,"slug":"michael-nitschinger","display_name":"Michael Nitschinger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","author_category":"","last_name":"Nitschinger, Principal Software Engineer, Couchbase","first_name":"Michael","job_title":"","user_url":"https:\/\/nitschinger.at","description":"\ub9c8\uc774\ud074 \ub2c8\uce6d\uc5b4\ub294 Couchbase\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\ub85c \uc77c\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub294 JVM\uc5d0\uc11c \ucd5c\ucd08\uc758 \uc644\uc804 \ubc18\uc751\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84 \uc911 \ud558\ub098\uc778 Couchbase Java SDK\uc758 \uc124\uacc4\uc790\uc774\uc790 \uc720\uc9c0 \uad00\ub9ac\uc790\uc785\ub2c8\ub2e4. \ub610\ud55c Couchbase Spark Connector\ub97c \uc791\uc131\ud558\uace0 \uc720\uc9c0 \uad00\ub9ac\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. Michael\uc740 \uc624\ud508 \uc18c\uc2a4 \ucee4\ubba4\ub2c8\ud2f0\uc5d0\uc11c \ud65c\ubc1c\ud788 \ud65c\ub3d9 \uc911\uc774\uba70, RxJava \ubc0f Netty\uc640 \uac19\uc740 \ub2e4\uc591\ud55c \ud504\ub85c\uc81d\ud2b8\uc5d0 \uae30\uc5ec\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2088"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2088\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2088"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}