{"id":280,"date":"2020-03-27T13:34:11","date_gmt":"2020-03-27T04:34:11","guid":{"rendered":"http:\/\/www.skyer9.pe.kr\/wordpress\/?p=280"},"modified":"2020-03-29T00:11:30","modified_gmt":"2020-03-28T15:11:30","slug":"jvmjava-virtual-machine","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=280","title":{"rendered":"JVM(Java Virtual Machine)"},"content":{"rendered":"<h1>JVM(Java Virtual Machine)<\/h1>\n<p>\ucd9c\ucc98 : <a href=\"https:\/\/jeong-pro.tistory.com\/148\">https:\/\/jeong-pro.tistory.com\/148<\/a><\/p>\n<p>JVM \uc740 \uc790\ubc14 \ubc14\uc774\ud2b8\ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\ub294 \uac00\uc0c1 \uba38\uc2e0\uc785\ub2c8\ub2e4.<\/p>\n<p>\ubc14\uc774\ud2b8 \ucf54\ub4dc \uc0c1\ud0dc\uc758 class \ud30c\uc77c\uc744 \uc77d\uc5b4\ub4e4\uc5ec, \uc6b4\uc601\uccb4\uc81c\uac00 \uc778\uc2dd\ud560 \uc218 \uc788\ub294 \uae30\uacc4\uc5b4\ub85c \ubcc0\uacbd\ud558\uace0, \uc2e4\ud589\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/p>\n<h2>JVM \uc758 \uad6c\uc131\uc694\uc18c<\/h2>\n<p>JVM \uc740 \ud06c\uac8c 4\uac00\uc9c0 \uad6c\uc131\uc73c\ub85c(Class Loader, Execution Engine, Garbage Collector, Runtime Data Area) \ub098\ub204\uc5b4 \uc9d1\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"\/wordpress\/wp-content\/uploads\/2020\/03\/20200327-01.png\" alt=\"\" \/><\/p>\n<h3>Class Loader<\/h3>\n<p>\uc790\ubc14 \ucef4\ud30c\uc77c\ub7ec\uc5d0 \uc758\ud574 \ubc14\uc774\ud2b8\ucf54\ub4dc\ub85c \ubcc0\ud658\ub41c \ud074\ub798\uc2a4\ub97c \uc77d\uc5b4\ub4e4\uc5ec <code>Runtime Data Area<\/code> \uc5d0 \uc801\uc7ac\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/p>\n<h3>Execution Engine<\/h3>\n<p><code>Class Loader<\/code> \uc5d0 \uc758\ud574 <code>Runtime Data Area<\/code> \uc5d0 \uc801\uc7ac\ub41c \ud074\ub798\uc2a4(\ubc14\uc774\ud2b8\ucf54\ub4dc) \ub97c \uae30\uacc4\uc5b4\ub85c \ubcc0\ud658\ud558\uace0 \uc2e4\ud589\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/p>\n<p>\uba85\ub839\uc5b4\ub294 Interpreter \ubc29\uc2dd\uc73c\ub85c \ud558\ub098\ud558\ub098 \uc2e4\ud589\ub418\uae30\ub3c4 \ud558\uace0, <code>JIT(Just-In-Time)<\/code> \uc5d0 \uc758\ud574 \uc801\uc808\ud55c \uc2dc\uac04\uc5d0 \uc804\uccb4 \ubc14\uc774\ud2b8\ucf54\ub4dc\ub97c \ub124\uc774\ud2f0\ube0c\ucf54\ub4dc\ub85c \ubcc0\ud658\ud558\uc5ec \uc2e4\ud589\ub418\uae30\ub3c4 \ud569\ub2c8\ub2e4.<\/p>\n<h3>Garbage Collector<\/h3>\n<p><code>Garbage Collector(GC)<\/code> \ub294 <code>Heap<\/code> \uc601\uc5ed\uc5d0 \uc0dd\uc131\ub418\uc5b4 \uc788\ub294 \uac1d\uccb4\ub4e4 \uc911 \ucc38\uc870\ub418\uc9c0 \uc54a\ub294 \uac1d\uccb4\ub97c \ucc3e\uc544 \uc81c\uac70\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/p>\n<p><code>GC<\/code> \uac00 \uc2e4\ud589\ub418\ub294 \uc2dc\uac04\uc740 \uc815\ud574\uc838 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud2b9\ud788 <code>Full GC<\/code> \uac00 \ubc1c\uc0dd\ud558\ub294 \uacbd\uc6b0, <code>GC<\/code> \ub97c \uc81c\uc678\ud55c \ubaa8\ub4e0 \uc2a4\ub808\ub4dc\uac00 \uc911\uc9c0\ub418\uae30 \ub54c\ubb38\uc5d0 \uc7a5\uc560\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>Runtime Data Area<\/h3>\n<p>JVM \uc758 \uba54\ubaa8\ub9ac \uc601\uc5ed\uc73c\ub85c \uc790\ubc14 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud560 \ub54c \uc0ac\uc6a9\ub418\ub294 \ub370\uc774\ud130\ub4e4\uc744 \uc801\uc7ac\ud558\ub294 \uc601\uc5ed\uc785\ub2c8\ub2e4.<\/p>\n<h2>Runtime Data Area \uc0c1\uc138<\/h2>\n<p>\uc774 \uc601\uc5ed\uc740 \ud06c\uac8c Method Area, Heap Area, Stack Area, PC Register, Native Method Stack \uc73c\ub85c \ub098\ub20c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"\/wordpress\/wp-content\/uploads\/2020\/03\/20200327-02.png\" alt=\"\" \/><\/p>\n<h3>Method Area<\/h3>\n<p>\ud074\ub798\uc2a4 \uc815\ubcf4\uac00 \uc800\uc7a5\ub418\ub294 \uacf5\uac04\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud074\ub798\uc2a4\uc758 \uba54\uc18c\ub4dc \uc815\ubcf4\uac00 \uc800\uc7a5\ub418\uace0, \ub9f4\ubc84 \ubcc0\uc218\uc758 \uc774\ub984\uacfc \ud0c0\uc785, \uba54\uc18c\ub4dc\uc758 \uc774\ub984\uacfc \ud30c\ub77c\ubbf8\ud130 \uadf8\ub9ac\uace0 \ub9ac\ud134\uac12\uc774 \uc800\uc7a5\ub418\uace0, \uac01\uc885 \uc0c1\uc218, static \uba54\uc18c\ub4dc, final \ud074\ub798\uc2a4 \ubcc0\uc218 \ub4f1\uc774 \uc800\uc7a5\ub429\ub2c8\ub2e4.<\/p>\n<h3>Heap Area<\/h3>\n<p><code>new<\/code> \ud0a4\uc6cc\ub4dc\uc5d0 \uc758\ud574 \uc0dd\uc131\ub418\ub294 \ud074\ub798\uc2a4\uc640 \ubc30\uc5f4 \ub4f1\uc774 \uc800\uc7a5\ub429\ub2c8\ub2e4.<\/p>\n<p><code>Method Area<\/code> \uc601\uc5ed\uc5d0 \uc800\uc7a5\ub41c \ud074\ub798\uc2a4\ub9cc\uc774 \uc0dd\uc131 \uac00\ub2a5\ud558\uace0, <code>Garbage Collector<\/code> \uc5d0 \uc758\ud574 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294 \ud074\ub798\uc2a4\/\ubc30\uc5f4\uc774 \uc81c\uac70\ub429\ub2c8\ub2e4.<\/p>\n<h3>Stack Area<\/h3>\n<p>\uc9c0\uc5ed \ubcc0\uc218, \ud30c\ub77c\ubbf8\ud130, \ub9ac\ud134 \uac12, \uc5f0\uc0b0\uc5d0 \uc0ac\uc6a9\ub418\ub294 \uc784\uc2dc \uac12\ub4f1\uc774 \uc0dd\uc131\ub418\ub294 \uc601\uc5ed\uc785\ub2c8\ub2e4.<\/p>\n<p><code>int<\/code> \uc640 \uac19\uc740 \ud074\ub798\uc2a4 \uc544\ub2cc \ubcc0\uc218\ub4e4\uc740 \uc774\uacf3\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4. <code>Person p = new Person();<\/code> \uc640 \uac19\uc774 \ud074\ub798\uc2a4\ub97c \uc0dd\uc131\ud560 \uacbd\uc6b0, <code>new<\/code> \uc5d0 \uc758\ud574 \uc0dd\uc131\ub41c \ud074\ub798\uc2a4\ub294 <code>Heap Area<\/code> \uc5d0 \uc800\uc7a5\ub418\uace0, <code>Stack Area<\/code> \uc5d0\ub294 \uc0dd\uc131\ub41c \ud074\ub798\uc2a4\uc758 \ucc38\uc870\uc778 <code>p<\/code> \ub9cc \uc800\uc7a5\ub429\ub2c8\ub2e4.<\/p>\n<p>\ud074\ub798\uc2a4\uc758 \uba54\uc18c\ub4dc\ub97c \uc2e4\ud589\ud560 \ub54c\ub9c8\ub2e4 \uc2a4\ud0dd\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/p>\n<p><code>Method Area<\/code>, <code>Heap Area<\/code> \ub97c \uc81c\uc678\ud55c \uc601\uc5ed\ub4e4\uc740 \uc2a4\ub808\ub4dc\uac04\uc5d0 \uacf5\uc720\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>PC Register<\/h3>\n<p>\uc2a4\ub808\ub4dc\uac00 \uc0dd\uc131\ub420 \ub54c\ub9c8\ub2e4 \uc0dd\uc131\ub418\uba70, \ud604\uc7ac \uc2e4\ud589\uc911\uc778 \uc8fc\uc18c\uc640 \uba85\ub839\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uba40\ud2f0 \uc2a4\ub808\ub4dc\uac00 \ub3d9\uc791\ud560 \ub54c, \uc774\uacf3\uc758 \uc815\ubcf4\ub97c \uc774\uc6a9\ud574 \uc5ec\ub7ec \uc2a4\ub808\ub4dc\ub97c \ub3d9\uc2dc\uc5d0 \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>Native Method Stack<\/h3>\n<p>\uc790\ubc14 \uc774\uc678\uc758 \ucf54\ub4dc(JNI) \uac00 \uc800\uc7a5\ub418\ub294 \uacf5\uac04\uc785\ub2c8\ub2e4.<\/p>\n<h2>Heap area &amp; Garbage Collector<\/h2>\n<p><code>Heap area<\/code> \uc758 \uad6c\uc131\uacfc <code>Garbage Collector<\/code> \uc758 \uc138\ubd80\uc801\uc778 \uc2e4\ud589\ubc29\uc2dd\uc740 \ubcc0\ucc9c\uc0ac\uac00 \uc880 \uc788\uc9c0\ub9cc, \uc544\ub798\uc5d0\uc11c\ub294 <code>JDK7<\/code> \ubc84\uc804\uc744 \uae30\uc900\uc73c\ub85c \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<p><code>Heap area<\/code> \ub294 <code>eden<\/code>, <code>survivor1<\/code>, <code>survivor2<\/code>, <code>old<\/code>, <code>permanent<\/code> \ub85c 5\uac1c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4.<\/p>\n<h3>Minor GC<\/h3>\n<ul>\n<li>\n<p>\ucd5c\ucd08\uc5d0 \uac1d\uccb4\ub294 \ubaa8\ub450 <code>eden<\/code> \uc5d0 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/p>\n<\/li>\n<li>\n<p><code>eden<\/code> \uc601\uc5ed\uc774 \uac00\ub4dd\ucc28\uac8c \ub418\uba74 \uccab\ubc88\uc9f8 <code>GC(Minor GC)<\/code> \uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4. <code>survivor1<\/code> \uc601\uc5ed\uc73c\ub85c <code>eden<\/code> \uc601\uc5ed\uc758 \uba54\ubaa8\ub9ac\ub97c \uadf8\ub300\ub85c \ubcf5\uc0ac\ud569\ub2c8\ub2e4. \uadf8\ub9ac\uace0, <code>survivor1<\/code> \uc601\uc5ed\uc744 \uc81c\uc678\ud55c \ub2e4\ub978 \uc601\uc5ed\uc758 \uac1d\uccb4\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4.<\/p>\n<\/li>\n<li>\n<p><code>eden<\/code> \uc601\uc5ed\uacfc <code>survivor1<\/code> \uc601\uc5ed\uc774 \ubaa8\ub450 \uac00\ub4dd\ucc28\uac8c\ub418\uba74, \ucc38\uc870\ub418\uace0 \uc788\ub294 \uac1d\uccb4\ub97c \ucc3e\uc544 \ubaa8\ub450 <code>survivor2<\/code> \ub85c \ubcf5\uc0ac\ud569\ub2c8\ub2e4. <code>survivor2<\/code> \ub97c \uc81c\uc678\ud55c \ub098\uba38\uc9c0 \uc601\uc5ed\uc758 \uac1d\uccb4\ub97c \ubaa8\ub450 \uc81c\uac70\ud569\ub2c8\ub2e4.<\/p>\n<\/li>\n<li>\n<p>\uc704 \uacfc\uc815\uc744 \ubc18\ubcf5\ud558\uace0, <code>survivor2<\/code> \uac00 \uac00\ub4dd\ucc28\uae30 \uc804\uc5d0 <code>old<\/code> \uc601\uc5ed\uc73c\ub85c \ub2e4\uc2dc \ubcf5\uc0ac\ub97c \uc9c4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<\/li>\n<\/ul>\n<h3>Major GC(Full GC)<\/h3>\n<p><code>old<\/code> \uc601\uc5ed\uc744 \uac80\uc0ac\ud558\uc5ec \ucc38\uc870\uac00 \uc5c6\ub294 \uac1d\uccb4\ub4e4\uc744 \ucc3e\uc544 \ubaa8\ub450 \uc81c\uac70\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub807\uac8c \ud558\uba74 \uba54\ubaa8\ub9ac \uc601\uc5ed\uc5d0 \uc911\uac04\uc911\uac04 \uad6c\uba4d(\uc81c\uac70\ub418\uace0 \ube48 \uba54\ubaa8\ub9ac \uacf5\uac04) \uc774 \uc0dd\uae30\ub294\ub370, \uc774\uac83\uc744 \ub514\uc2a4\ud06c \uc870\uac01\ubaa8\uc74c\ucc98\ub7fc \uc870\uac01\ub09c \uba54\ubaa8\ub9ac\ub97c \uc815\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n<p>\ubaa8\ub4e0 \uba54\ubaa8\ub9ac\ub97c \uc774\ub3d9\uc2dc\ud0a4\uae30\uc5d0 \ub2e4\ub978 \uc2a4\ub808\ub4dc\uac00 \uc811\uadfc\ud560 \uc218 \uc5c6\ub3c4\ub85d \ubaa8\ub4e0 \uc2a4\ub808\ub4dc\ub97c \uc815\uc9c0\uc2dc\ud0b5\ub2c8\ub2e4.<\/p>\n<h2>\uba54\ubaa8\ub9ac \uad00\ub828 \uc911\uc694 \ud30c\ub77c\ubbf8\ud130<\/h2>\n<p><img decoding=\"async\" src=\"\/wordpress\/wp-content\/uploads\/2020\/03\/20200327-03.gif\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JVM(Java Virtual Machine) \ucd9c\ucc98 : https:\/\/jeong-pro.tistory.com\/148 JVM \uc740 \uc790\ubc14 \ubc14\uc774\ud2b8\ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\ub294 \uac00\uc0c1 \uba38\uc2e0\uc785\ub2c8\ub2e4. \ubc14\uc774\ud2b8 \ucf54\ub4dc \uc0c1\ud0dc\uc758 class \ud30c\uc77c\uc744 \uc77d\uc5b4\ub4e4\uc5ec, \uc6b4\uc601\uccb4\uc81c\uac00 \uc778\uc2dd\ud560 \uc218 \uc788\ub294 \uae30\uacc4\uc5b4\ub85c \ubcc0\uacbd\ud558\uace0, \uc2e4\ud589\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. JVM \uc758 \uad6c\uc131\uc694\uc18c JVM \uc740 \ud06c\uac8c 4\uac00\uc9c0 \uad6c\uc131\uc73c\ub85c(Class Loader, Execution Engine, Garbage Collector, Runtime Data Area) \ub098\ub204\uc5b4 \uc9d1\ub2c8\ub2e4. Class Loader \uc790\ubc14 \ucef4\ud30c\uc77c\ub7ec\uc5d0 \uc758\ud574 \ubc14\uc774\ud2b8\ucf54\ub4dc\ub85c \ubcc0\ud658\ub41c \ud074\ub798\uc2a4\ub97c \uc77d\uc5b4\ub4e4\uc5ec\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=280\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-280","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=280"}],"version-history":[{"count":4,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/280\/revisions"}],"predecessor-version":[{"id":357,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/280\/revisions\/357"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}