{"id":444,"date":"2014-12-18T22:56:30","date_gmt":"2014-12-19T07:56:30","guid":{"rendered":"http:\/\/blog.box.kr\/?p=444"},"modified":"2014-12-18T22:56:30","modified_gmt":"2014-12-19T07:56:30","slug":"%ed%8e%8cjmx%eb%a5%bc-%ec%9d%b4%ec%9a%a9%ed%95%98%ec%97%ac-jvm-%eb%aa%a8%eb%8b%88%ed%84%b0%eb%a7%81-%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/blog.box.kr\/?p=444","title":{"rendered":"[\ud38c]JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30"},"content":{"rendered":"<p><b>JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30<\/b><br \/>\nJDK 1.5 \ubd80\ud130 JVM\uc5d0\ub294 Platform MBeanServer\uac00 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 jvm \ud30c\ub77c\ubbf8\ud130\ub85c\u00a0 Platform MBeanServer\uac00 \ub3d9\uc791\ud558\ub3c4\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \ud504\ub85c\uadf8\ub7a8 \uad6c\ub3d9\uc2dc \ub2e4\uc74c\uacfc \uac19\uc740 jvm \ud30c\ub77c\ubbf8\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>jvm \ud30c\ub77c\ubbf8\ud130:<\/p>\n<p>&nbsp;<\/p>\n<p>-Dcom.sun.management.jmxremote.port=9999<br \/>\n-Dcom.sun.management.jmxremote.authenticate=false<br \/>\n-Dcom.sun.management.jmxremote.ssl=false<br \/>\n\uc608\uc81c \uc18c\uc2a4 :<\/p>\n<p>&nbsp;<\/p>\n<p>import javax.management.MBeanServerConnection;<br \/>\nimport javax.management.ObjectName;<br \/>\nimport javax.management.remote.JMXConnector;<br \/>\nimport javax.management.remote.JMXConnectorFactory;<br \/>\nimport javax.management.remote.JMXServiceURL;<\/p>\n<p>&nbsp;<\/p>\n<p>public class JMXClient<br \/>\n{<\/p>\n<p>public static void main(String[] args)<br \/>\n{<br \/>\ntry<\/p>\n<p>{<\/p>\n<p>\/\/ rmi\ub97c \uc774\uc6a9\ud558\uc5ec JVM\uc758 Platform MBean Server\uc5d0 \uc5f0\uacb0\ud569\ub2c8\ub2e4.<br \/>\nJMXServiceURL url = new JMXServiceURL(<br \/>\n&#8220;service:jmx:rmi:\/\/\/jndi\/rmi:\/\/localhost:9999\/jmxrmi&#8221;);<br \/>\nJMXConnector jmxc = JMXConnectorFactory.connect(url, null);<\/p>\n<p>MBeanServerConnection mbs_ = jmxc.getMBeanServerConnection();<\/p>\n<p>\/\/ OperatingSystemMBean\uc73c\ub85c \ubd80\ud130 \uc6b4\uc601\uccb4\uc81c \uc815\ubcf4\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4.<br \/>\nObjectName stdMBeanName =<\/p>\n<p>new ObjectName(&#8220;java.lang:type=OperatingSystem&#8221;);<\/p>\n<p>System.out.println(&#8220;System Arch = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;Arch&#8221;));<br \/>\nSystem.out.println(&#8220;Number of Processors = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;AvailableProcessors&#8221;));<br \/>\nSystem.out.println(&#8220;OS Name = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;Name&#8221;));<br \/>\nSystem.out.println(&#8220;OS Version = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;Version&#8221;));<\/p>\n<p>\/\/ RuntimeMBean\uc73c\ub85c \ubd80\ud130 Runtime \uc815\ubcf4\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4.<br \/>\nstdMBeanName = new ObjectName(&#8220;java.lang:type=Runtime&#8221;);<\/p>\n<p>System.out.println(&#8220;Name = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;Name&#8221;));<br \/>\nSystem.out.println(&#8220;Spec Name = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;SpecName&#8221;));<br \/>\nSystem.out.println(&#8220;VM Version = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;VmVerion&#8221;));<\/p>\n<p>\/\/ ClassLoadingMBean \uc73c\ub85c \ubd80\ud130 \ub85c\ub529\ub41c \ud074\ub798\uc2a4 \uc815\ubcf4\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4.<br \/>\nstdMBeanName = new ObjectName(&#8220;java.lang:type=ClassLoading &#8220;);<br \/>\nSystem.out.println(&#8220;Loaded Class Count = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;LoadedClassCount&#8221;));<br \/>\nSystem.out.println(&#8220;Total Loaded Class Count = &#8221;<\/p>\n<p>+ mbs_.getAttribute(stdMBeanName, &#8220;TotalLoadedClassCount&#8221;));<br \/>\n}<\/p>\n<p>catch (Exception e)<\/p>\n<p>{<br \/>\ne.printStackTrace();<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n&nbsp;<\/p>\n<p>\uc2e4\ud589\uacb0\uacfc :<\/p>\n<p>&nbsp;<\/p>\n<p>System Arch = x86<br \/>\nNumber of Processors = 2<br \/>\nOS Name = Windows XP<br \/>\nOS Version = 5.1<br \/>\nName = <a href=\"mailto:2904@hslim\" target=\"_blank\">2904@hslim<\/a><br \/>\nSpec Name = Java Virtual Machine Specification<br \/>\nVM Version = 1.5.0_03-b07<br \/>\nLoaded Class Count = 3501<br \/>\nTotal Loaded Class Count = 3531<\/p>\n<p>&nbsp;<\/p>\n<p>JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30 \ud3ec\uc2a4\ud2b8\uc5d0\ub294 \uba54\ubaa8\ub9ac\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud558\ub294 \ubd80\ubd84\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \uba54\ubaa8\ub9ac\ub97c \ubaa8\ub2c8\ud130\ub9c1\ud558\ub294 \uc608\uc81c\ub97c \uc791\uc131\ud558\uc5ec \ubcf4\ub3c4\ub85d\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>1. \uba54\ubaa8\ub9ac \ubaa8\ub2c8\ud130\ub9c1 MBeans<\/p>\n<p>1.1 java.lang.management.MemoryMBean<\/p>\n<p>Object Name : java.lang:type=Memory<\/p>\n<p>&nbsp;<\/p>\n<p>JVM\ub0b4\uc5d0\uc11c \uc720\uc77c\ud55c \uc778\uc2a4\ud134\uc2a4\ub85c \uba54\ubaa8\ub9ac \uc2dc\uc2a4\ud15c\uc5d0 \ub300\ud55c \uad00\ub9ac \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774 MBean\uc744 \uc774\uc6a9\ud558\uc5ec \uc804\uccb4 \uba54\ubaa8\ub9ac \uc0ac\uc6a9 \ud604\ud669\uc744 \ubaa8\ub2c8\ud130\ub9c1 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc Memory Pool \ucc98\ub7fc Peak \uba54\ubaa8\ub9ac \ud604\ud669\uc740 \uc81c\uacf5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uc8fc\uc694 \uba54\uc18c\ub4dc :<\/p>\n<p>&#8211; MemoryUsage getHeapMemoryUsage()<\/p>\n<p>Heap \uba54\ubaa8\ub9ac\uc758 \uc0ac\uc6a9 \ud604\ud669\uc744 \ub9ac\ud134\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; MemoryUsage getNonHeapMemoryUsage()<\/p>\n<p>Non-Heap \uba54\ubaa8\ub9ac\uc758 \uc0ac\uc6a9 \ud604\ud669\uc744 \ub9ac\ud134\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; void gc()<\/p>\n<p>GC\ub97c \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uba54\ubaa8\ub9ac \uc2dc\uc2a4\ud15c\uc740 \ud06c\uac8c Heap \uc601\uc5ed\uacfc Non-Heap \uc601\uc5ed\uc73c\ub85c \ub098\ub204\uc5b4 \uc9d1\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>Heap :<\/p>\n<p>Heap \uc601\uc5ed\uc740 \uc2e4\ud589\uc911\uc5d0 \uc0dd\uc131\ub418\ub294 \ub370\uc774\ud130\ub4e4\uc744 \uc704\ud55c \uc601\uc5ed\uc785\ub2c8\ub2e4. \ud074\ub798\uc2a4\uc778 \uc2a4\ud134\uc2a4\uc640 \ubc30\uc5f4\ub4e4\uc774 \ud560\ub2f9\ub429\ub2c8\ub2e4. \uc774 \uc601\uc5ed\uc740 JVM\uc774 \uad6c\ub3d9\ub420 \ub54c \uc0dd\uc131\ub418\uba70, \uac1d\uccb4\ub97c \uc704\ud558\uc5ec \ud560\ub2f9\ub41c Heap \uba54\ubaa8\ub9ac\ub294 gc\uc5d0 \uc758\ud574\uc11c \ubc18\ud658 \ub429\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>Non-Heap :<\/p>\n<p>&nbsp;<\/p>\n<p>Non-Heap \uc601\uc5ed\uc740 JVM\uc5d0 \uc758\ud558\uc5ec \uad00\ub9ac\ub418\ub294 Heap \uc774\uc678\uc758 \uc601\uc5ed\uc744 \ub9d0\ud569\ub2c8\ub2e4. JVM\uc740 \uc2a4\ub808\ub4dc\ub4e4\uac04\uc5d0 \uacf5\uc720\ub418\ub294 &#8220;method area&#8221;\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba70 Non-Heap \uc601\uc5ed\uc5d0 \uc704\uce58\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uacf3\uc5d0\ub294 \ud074\ub798\uc2a4 \ubcc4\ub85c \ub7f0\ud0c0\uc784 \uc0c1\uc218 \ud480, \ud544\ub4dc \ubc0f \uba54\uc18c\ub4dc \ub370\uc774\ud130, \uadf8\ub9ac\uace0 \uba54\uc18c\ub4dc \ubc0f \uc0dd\uc131\uc790\ub4e4\uc758 \ucf54\ub4dc\uc640 \uac19\uc740 \uc790\ub8cc\uad6c\uc870\ub4e4\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<p>Heap \uc601\uc5ed\uc740 JVM\uc774 \uad6c\ub3d9\ub420 \ub54c \uc0dd\uc131\ub418\uba70, \ub17c\ub9ac\uc801\uc73c\ub85c Heap\uc758 \uc77c\ubd80\uc774\uc9c0\ub9cc \uad6c\ud604\ub41c JVM\uc740 garbage collect \ub610\ub294 compact \ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&#8220;method area&#8221; \uc678\uc5d0 JVM\uc740 \ub0b4\ubd80 \ud504\ub85c\uc138\uc2f1 \ubc0f \ucd5c\uc801\ud654\ub97c \uc704\ud558\uc5ec Non Heap \uc601\uc5ed\uc5d0 \uc788\ub294 \uba54\ubaa8\ub9ac\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 JIT \ucef4\ud30c\uc77c\ub7ec\ub294 \uc131\ub2a5 \ud5a5\uc0c1\uc744 \uc704\ud558\uc5ec JVM \ucf54\ub4dc\uc5d0\uc11c \ubcc0\ud658\ub41c \uc6d0\uc2dc \uae30\uacc4 \ucf54\ub4dc\ub97c \uc800\uc7a5\ud560 \uba54\ubaa8\ub9ac\ub97c \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>1.2 java.lang.management.MemoryPoolMBean<\/p>\n<p>Object Name : java.lang:type=MemoryPool,name=pool&#8217;s name<\/p>\n<p>&nbsp;<br \/>\nMemory Pool\uc740 JVM\uc5d0 \uc758\ud558\uc5ec \uad00\ub9ac\ub418\ub294 \uba54\ubaa8\ub9ac \ub9ac\uc18c\uc2a4\uc785\ub2c8\ub2e4. JVM\uc740 \ud558\ub098 \uc774\uc0c1\uc758 Memory Pool\uc778\uc2a4\ud134\uc2a4\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba70, Pool \uc774\ub984\uc73c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. Heap \ub610\ub294 Non-Heap\uc758 \uc77c\ubd80\ubd84\uc774\uba70 \ud558\ub098 \uc774\uc0c1\uc758 Memory Manager\uc5d0 \uc758\ud558\uc5ec \uad00\ub9ac \ub429\ub2c8\ub2e4. Memory Pool\uc740 \uc2e4\ud589 \uc911\uc5d0 JVM\uc5d0 \uc758\ud558\uc5ec \uc0dd\uc131\ub418\uac70\ub098 \uc18c\uba78\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>Memory Pool\uc740 JVM\uc5d0 \ub530\ub77c \uc778\uc2a4\ud134\uc2a4\uc758 \uc218 \ubc0f Object \uc774\ub984\uc774 \uac00\ubcc0\uc801\uc774\ubbc0\ub85c Object Name\uc73c\ub85c \uc9c1\uc811\uc801\uc73c\ub85c \uc811\uadfc\uc744 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub9ac\ubaa8\ud2b8\uc5d0\uc11c \ubaa8\ub2c8\ud130\ub9c1 \uc2dc\uc5d0\ub294 MBeanServerConnection\uc758 queryMBeans()\uba54\uc18c\ub4dc\ub97c \uc774\uc6a9\ud558\uc5ec Object Name\ub4e4\uc744 \uc870\ud68c\ud558\uc5ec \uc811\uadfc\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uc8fc\uc694 \uba54\uc18c\ub4dc :<\/p>\n<p>&#8211; List getMemoryManagerNames()<\/p>\n<p>Memory Pool\uc744 \uad00\ub9ac\ud558\uace0 \uc788\ub294 Memory Manager\ub4e4\uc758 \uc774\ub984 \ub9ac\uc2a4\ud2b8\ub97c \ub9ac\ud134 \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; String getName()<\/p>\n<p>Memory Pool\uc758 \uc774\ub984\uc744 \ub9ac\ud134 \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uc608) Survivor Space, Tenured Gen, Perm Gen, Eden Space, Perm Gen [shared-ro],<br \/>\nPerm Gen [shared-rw], Code Cache<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; MemoryUsage getPeakUsage()<\/p>\n<p>JVM\uc774 \uad6c\ub3d9\ub41c \ud6c4 \ub610\ub294 Peak Usage\uac00 reset \ub41c \ud6c4\ub85c\ubd80\ud130 \uac00\uc7a5 \ub9ce\uc774 \uc0ac\uc6a9\ub41c \uba54\ubaa8\ub9ac \ud604\ud669\uc744<\/p>\n<p>\ub9ac\ud134 \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; MemoryType getType()<\/p>\n<p>Memory Pool\uc758 \uc720\ud615(Heap \ub610\ub294 Non-Heap)\uc744 \ub9ac\ud134 \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; MemoryUsage getUsage()<\/p>\n<p>Memory Pool\uc758 \ud604\uc7ac \uba54\ubaa8\ub9ac \uc0ac\uc6a9 \ud604\ud669\uc744 \ub9ac\ud134 \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; void resetPeakUsage()<\/p>\n<p>Peak \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ud604\ud669\uc744 \ud604\uc7ac \uc0ac\uc6a9\ud604\ud669\uc73c\ub85c \ucd08\uae30\ud654\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>1.3 java.lang.management.MemoryManagerMBean<\/p>\n<p>Object Name : java.lang:type=MemoryManager,name=manager&#8217;s name<\/p>\n<p>&nbsp;<\/p>\n<p>Memory Manager\ub294 \ud558\ub098 \uc774\uc0c1\uc758 Memory Pool\ub4e4\uc744 \uad00\ub9ac\ud569\ub2c8\ub2e4. Garbage collector\ub294 \uc0ac\uc6a9\ub418\uc9c0 \uc54a\ub294(Unreachable) \uac1d\uccb4\uac00 \uc810\uc720\ud558\uace0 \uc788\ub294 \uba54\ubaa8\ub9ac \uc601\uc5ed\uc744 \ubc18\ud658\ud558\ub294 \uc5ed\ud560\uc744 \ud558\ub294 Memory Manager \uc785\ub2c8\ub2e4. JVM\uc740 \ud558\ub098 \uc774\uc0c1\uc758 Memory Manager\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba70 \uad6c\ub3d9 \uc911\uc5d0 \uc0dd\uc131\ub418\uac70\ub098 \uc18c\uba78 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uc8fc\uc694 \uba54\uc18c\ub4dc :<\/p>\n<p>&#8211; String getName()<br \/>\nMemory Manager\uc758 \uc774\ub984\uc744 \ub9ac\ud134\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; List getMemoryPoolNames()<br \/>\nMomory Pool\ub4e4\uc758 \uc774\ub984\uc744 \ub9ac\uc2a4\ud2b8\uc5d0 \ub2f4\uc544 \ub9ac\ud134\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>1.4 javax.management.MBeanServerConnection<\/p>\n<p>MBeanServer\uc5d0 \ub300\ud55c \ub85c\uceec \ubc0f \ub9ac\ubaa8\ud2b8 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.\u00a0 \ub9ac\ubaa8\ud2b8\uc5d0\uc11c Plaform MBean\uc758 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc774\uc6a9\ud558\uace0 \uc790 \ud560 \uacbd\uc6b0\ub294\u00a0\u00a0 MBeanServerConnection\ub97c \ud1b5\ud558\uc5ec \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 MBeanServerConnection\uc740 JMXConnector\uc640 \uac19\uc740 Connector\ub97c \ud1b5\ud558\uc5ec \uc778\uc2a4\ud134\uc2a4\ub97c \uc5bb\uc2b5\ub2c8\ub2e4. MBeanServerConnection\uc758 \uc778\ud130\ud398\uc774\uc2a4 \uc911\uc5d0 \uc774\ubc88 \uc608\uc81c\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub4e4\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uc8fc\uc694 \uba54\uc18c\ub4dc :<\/p>\n<p>&#8211; Object getAttribute(ObjectName name, String attribute)<br \/>\nname\uc5d0 \ud574\ub2f9\ud558\ub294 ObjectName\uc744 \uac00\uc9c4 MBean\uc5d0 \ub300\ud558\uc5ec attribute\ubb38\uc790\uc5f4\uc774 \uac00\ub9ac\ud0a4\ub294 \uc18d\uc131<\/p>\n<p>\uac12\uc744 \ucffc\ub9ac \ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&#8211; Set queryNames(ObjectName name, QueryExp query)<br \/>\nname \uc778\uc790\uac00 null\uc774 \uc544\ub2cc \uacbd\uc6b0\ub294 \uc8fc\uc5b4\uc9c4 name\uc774 \uc874\uc7ac\ud558\ub294\uc9c0 \ud655\uc778 \ud560 \ub54c \uc8fc\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\nquery \uc778\uc790\ub294\u00a0 \ud328\ud134\uc73c\ub85c Object Name\uc744 \uc870\ud68c \ud558\uace0\uc790 \ud560 \uacbd\uc6b0\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\nQueryExp \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud55c \ud074\ub798\uc2a4\ub294 ObjectName\uc774 \uc788\uc2b5\ub2c8\ub2e4. ObjectName\uc5d0 &#8220;*&#8221;, &#8220;?&#8221;\uc774<\/p>\n<p>\ub4e4\uc5b4\uac04 \uacbd\uc6b0\ub294 QueryExp\uc73c\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\u00a0 &#8220;*&#8221;\ub294 \uacf5\ubc31 \ubc0f \ud55c \ubb38\uc790 \uc774\uc0c1\uc758 \ubb38\uc790\uc5f4\uc5d0 \ud574\ub2f9\ud558\uace0<\/p>\n<p>&#8220;?&#8221; \ub294 \ub2e8\uc77c \ubb38\uc790\uc5d0 \ud574\ub2f9\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>\uc608) MemoryPoole\ub4e4\uc758 Object Name\uc744 \uc870\ud68c<\/p>\n<p>new ObjectName(&#8220;java.lang:type=MemoryPool,*&#8221;);<br \/>\n&nbsp;<\/p>\n<p>2. \uc18c\uc2a4 \ucf54\ub4dc<\/p>\n<p>MemoryMBean\uc744 \uc774\uc6a9\ud558\uc5ec \uc804\uccb4 \uba54\ubaa8\ub9ac \uacf5\uac04\uc758 Heap \ubc0f NonHeap\uc758 \uba54\ubaa8\ub9ac \uc0ac\uc6a9 \ud604\ud669 \ubc0f \uac01\uac01\uc758 MomeryPool\uc5d0 \ub300\ud574\uc11c\ub294 Peak Usage\uc640 Usage \uba54\ubaa8\ub9ac \uc0ac\uc6a9 \ud604\ud669 \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>import java.lang.management.MemoryUsage;<br \/>\nimport java.util.Iterator;<br \/>\nimport java.util.Set;<\/p>\n<p>import javax.management.MBeanServerConnection;<br \/>\nimport javax.management.ObjectInstance;<br \/>\nimport javax.management.ObjectName;<br \/>\nimport javax.management.openmbean.CompositeData;<br \/>\nimport javax.management.remote.JMXConnector;<br \/>\nimport javax.management.remote.JMXConnectorFactory;<br \/>\nimport javax.management.remote.JMXServiceURL;<\/p>\n<p>&nbsp;<\/p>\n<p>public class MemoryMonitor<\/p>\n<p>{<\/p>\n<p>public static void main(String[] args)<br \/>\n{<br \/>\ntry<br \/>\n{<br \/>\nJMXServiceURL url = new JMXServiceURL(<\/p>\n<p>&#8220;service:jmx:rmi:\/\/\/jndi\/rmi:\/\/localhost:9999\/jmxrmi&#8221;);<br \/>\nJMXConnector jmxc = JMXConnectorFactory.connect(url, null);<\/p>\n<p>MBeanServerConnection mbs_ = jmxc.getMBeanServerConnection();<\/p>\n<p>ObjectName stdMBeanName = new ObjectName(&#8220;java.lang:type=Memory&#8221;);<\/p>\n<p>MemoryUsage musage_ = MemoryUsage.from(<\/p>\n<p>(CompositeData) mbs_.getAttribute(stdMBeanName,<\/p>\n<p>&#8220;HeapMemoryUsage&#8221;));<br \/>\nSystem.out.println(&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8220;);<br \/>\nSystem.out.println(&#8220;MemoryMBean \uc815\ubcf4 \ucd9c\ub825:&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; HeapMemoryUsage-init = &#8221;<\/p>\n<p>+ musage_.getInit()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; HeapMemoryUsage-max = &#8221;<\/p>\n<p>+ musage_.getMax()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; HeapMemoryUsage-used = &#8221;<\/p>\n<p>+ musage_.getUsed()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; HeapMemoryUsage-committed = &#8221;<\/p>\n<p>+ musage_.getCommitted()\/(1024.f) + &#8221; kbytes&#8221;);<\/p>\n<p>&nbsp;<\/p>\n<p>musage_ = MemoryUsage.from(<\/p>\n<p>(CompositeData) mbs_.getAttribute(stdMBeanName,<\/p>\n<p>&#8220;NonHeapMemoryUsage&#8221;));<br \/>\nSystem.out.println(&#8220;n&gt; NonHeapMemoryUsage-init = &#8221;<\/p>\n<p>+ musage_.getInit()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; NonHeapMemoryUsage-max = &#8221;<\/p>\n<p>+ musage_.getMax()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; NonHeapMemoryUsage-used = &#8221;<\/p>\n<p>+ musage_.getUsed()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; NonHeapMemoryUsage-committed = &#8221;<\/p>\n<p>+ musage_.getCommitted()\/(1024.f) + &#8221; kbytes&#8221;);<\/p>\n<p>\/\/ Query<br \/>\nstdMBeanName = new ObjectName(&#8220;java.lang:type=MemoryPool,*&#8221;);<br \/>\nSet pools_ = mbs_.queryNames(null, stdMBeanName);<\/p>\n<p>Iterator itr_ = pools_.iterator();<\/p>\n<p>while(itr_.hasNext())<br \/>\n{<br \/>\nObject obj_ = itr_.next();<br \/>\nObjectName objName_ = (ObjectName) obj_;<br \/>\n\/\/ Print Memory Pool Usage<br \/>\nSystem.out.println(&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8220;);<br \/>\nSystem.out.println(mbs_.getAttribute(objName_, &#8220;Name&#8221;)<\/p>\n<p>+ &#8221; Pool \uc815\ubcf4 \ucd9c\ub825:&#8221;);<br \/>\nSystem.out.println(&#8220;Memory Type = &#8221;<\/p>\n<p>+ mbs_.getAttribute(objName_, &#8220;Type&#8221;));<br \/>\nSystem.out.println(&#8220;Memory Peak Usage:&#8221;);<br \/>\nmusage_ = MemoryUsage.from(<\/p>\n<p>(CompositeData) mbs_.getAttribute(objName_, &#8220;PeakUsage&#8221;));<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-init = &#8221;<\/p>\n<p>+ musage_.getInit()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-max = &#8221;<\/p>\n<p>+ musage_.getMax()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-used = &#8221;<\/p>\n<p>+ musage_.getUsed()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-committed = &#8221;<\/p>\n<p>+ musage_.getCommitted()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;nMemory Current Usage:&#8221;);<br \/>\nmusage_ = MemoryUsage.from(<\/p>\n<p>(CompositeData) mbs_.getAttribute(objName_, &#8220;Usage&#8221;));<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-init = &#8221;<\/p>\n<p>+ musage_.getInit()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-max = &#8221;<\/p>\n<p>+ musage_.getMax()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-used = &#8221;<\/p>\n<p>+ musage_.getUsed()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\nSystem.out.println(&#8220;&gt; MemoryUsage-committed = &#8221;<\/p>\n<p>+ musage_.getCommitted()\/(1024.f) + &#8221; kbytes&#8221;);<br \/>\n}<br \/>\n}<br \/>\ncatch(Exception e)<br \/>\n{<br \/>\ne.printStackTrace();<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>3. \uc2e4\ud589 \uacb0\uacfc<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nMemoryMBean \uc815\ubcf4 \ucd9c\ub825:<br \/>\n&gt; HeapMemoryUsage-init = 0.0 kbytes<br \/>\n&gt; HeapMemoryUsage-max = 65088.0 kbytes<br \/>\n&gt; HeapMemoryUsage-used = 5964.367 kbytes<br \/>\n&gt; HeapMemoryUsage-committed = 6984.0 kbytes<\/p>\n<p>&gt; NonHeapMemoryUsage-init = 28864.0 kbytes<br \/>\n&gt; NonHeapMemoryUsage-max = 118784.0 kbytes<br \/>\n&gt; NonHeapMemoryUsage-used = 23218.664 kbytes<br \/>\n&gt; NonHeapMemoryUsage-committed = 32608.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nSurvivor Space Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 64.0 kbytes<br \/>\n&gt; MemoryUsage-max = 448.0 kbytes<br \/>\n&gt; MemoryUsage-used = 64.0 kbytes<br \/>\n&gt; MemoryUsage-committed = 64.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 64.0 kbytes<br \/>\n&gt; MemoryUsage-max = 448.0 kbytes<br \/>\n&gt; MemoryUsage-used = 55.710938 kbytes<br \/>\n&gt; MemoryUsage-committed = 64.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nTenured Gen Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 1408.0 kbytes<br \/>\n&gt; MemoryUsage-max = 60544.0 kbytes<br \/>\n&gt; MemoryUsage-used = 5795.1953 kbytes<br \/>\n&gt; MemoryUsage-committed = 6408.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 1408.0 kbytes<br \/>\n&gt; MemoryUsage-max = 60544.0 kbytes<br \/>\n&gt; MemoryUsage-used = 5795.1953 kbytes<br \/>\n&gt; MemoryUsage-committed = 6408.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nPerm Gen Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = NON_HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 8192.0 kbytes<br \/>\n&gt; MemoryUsage-max = 65536.0 kbytes<br \/>\n&gt; MemoryUsage-used = 9642.258 kbytes<br \/>\n&gt; MemoryUsage-committed = 9728.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 8192.0 kbytes<br \/>\n&gt; MemoryUsage-max = 65536.0 kbytes<br \/>\n&gt; MemoryUsage-used = 9642.258 kbytes<br \/>\n&gt; MemoryUsage-committed = 9728.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nEden Space Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 512.0 kbytes<br \/>\n&gt; MemoryUsage-max = 4096.0 kbytes<br \/>\n&gt; MemoryUsage-used = 512.0 kbytes<br \/>\n&gt; MemoryUsage-committed = 512.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 512.0 kbytes<br \/>\n&gt; MemoryUsage-max = 4096.0 kbytes<br \/>\n&gt; MemoryUsage-used = 239.5625 kbytes<br \/>\n&gt; MemoryUsage-committed = 512.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nPerm Gen [shared-ro] Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = NON_HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 8192.0 kbytes<br \/>\n&gt; MemoryUsage-max = 8192.0 kbytes<br \/>\n&gt; MemoryUsage-used = 5476.3594 kbytes<br \/>\n&gt; MemoryUsage-committed = 8192.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 8192.0 kbytes<br \/>\n&gt; MemoryUsage-max = 8192.0 kbytes<br \/>\n&gt; MemoryUsage-used = 5476.3594 kbytes<br \/>\n&gt; MemoryUsage-committed = 8192.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nPerm Gen [shared-rw] Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = NON_HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 12288.0 kbytes<br \/>\n&gt; MemoryUsage-max = 12288.0 kbytes<br \/>\n&gt; MemoryUsage-used = 5716.2344 kbytes<br \/>\n&gt; MemoryUsage-committed = 12288.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 12288.0 kbytes<br \/>\n&gt; MemoryUsage-max = 12288.0 kbytes<br \/>\n&gt; MemoryUsage-used = 5716.2344 kbytes<br \/>\n&gt; MemoryUsage-committed = 12288.0 kbytes<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nCode Cache Pool \uc815\ubcf4 \ucd9c\ub825:<br \/>\nMemory Type = NON_HEAP<br \/>\nMemory Peak Usage:<br \/>\n&gt; MemoryUsage-init = 192.0 kbytes<br \/>\n&gt; MemoryUsage-max = 32768.0 kbytes<br \/>\n&gt; MemoryUsage-used = 2383.8125 kbytes<br \/>\n&gt; MemoryUsage-committed = 2400.0 kbytes<\/p>\n<p>Memory Current Usage:<br \/>\n&gt; MemoryUsage-init = 192.0 kbytes<br \/>\n&gt; MemoryUsage-max = 32768.0 kbytes<br \/>\n&gt; MemoryUsage-used = 2383.8125 kbytes<br \/>\n&gt; MemoryUsage-committed = 2400.0 kbytes<\/p>\n<p>&nbsp;<\/p>\n<p>[\ucd9c\ucc98] JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30-2 [\uba54\ubaa8\ub9ac \ubaa8\ub2c8\ud130\ub9c1]|\uc791\uc131\uc790 \uc624\uc791\ub450<\/p>\n<div class=\"autosourcing-stub\">\n<p><strong>[\ucd9c\ucc98]<\/strong> <a href=\"http:\/\/cafe.naver.com\/ezezbiz\/859\" target=\"_blank\">JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30 (\ub300\ubc15\ubab0 \ud504\ub85c\uc81d\ud2b8)<\/a> |<strong>\uc791\uc131\uc790<\/strong> <a href=\"http:\/\/cafe.naver.com\/ezezbiz.cafe?iframe_url=\/CafeMemberNetworkView.nhn%3Fm=view%26memberid=jwon76\" target=\"_blank\">\uadf8\ub9ac\ub4dc\ub9e8<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>JMX\ub97c \uc774\uc6a9\ud558\uc5ec JVM \ubaa8\ub2c8\ud130\ub9c1 \ud558\uae30 JDK 1.5 \ubd80\ud130 JVM\uc5d0\ub294 Platform MBeanServer\uac00 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 jvm \ud30c\ub77c\ubbf8\ud130\ub85c\u00a0 Platform MBeanServer\uac00 \ub3d9\uc791\ud558\ub3c4\ub85d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub2c8\ud130\ub9c1 \ub300\uc0c1 \ud504\ub85c\uadf8\ub7a8 \uad6c\ub3d9\uc2dc \ub2e4\uc74c\uacfc \uac19\uc740 jvm \ud30c\ub77c\ubbf8\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud589\ud569\ub2c8\ub2e4. &nbsp; jvm \ud30c\ub77c\ubbf8\ud130: &nbsp; -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \uc608\uc81c \uc18c\uc2a4 : &nbsp; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; &nbsp; public class JMXClient { public static void main(String[] args) { try { \/\/ rmi\ub97c \uc774\uc6a9\ud558\uc5ec JVM\uc758 Platform MBean Server\uc5d0 \uc5f0\uacb0\ud569\ub2c8\ub2e4. JMXServiceURL url = new JMXServiceURL( &#8220;service:jmx:rmi:\/\/\/jndi\/rmi:\/\/localhost:9999\/jmxrmi&#8221;); JMXConnector jmxc = JMXConnectorFactory.connect(url, null); MBeanServerConnection mbs_ = jmxc.getMBeanServerConnection(); \/\/ OperatingSystemMBean\uc73c\ub85c \ubd80\ud130 \uc6b4\uc601\uccb4\uc81c \uc815\ubcf4\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4. ObjectName stdMBeanName = new ObjectName(&#8220;java.lang:type=OperatingSystem&#8221;); System.out.println(&#8220;System Arch = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;Arch&#8221;)); System.out.println(&#8220;Number of Processors = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;AvailableProcessors&#8221;)); System.out.println(&#8220;OS Name = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;Name&#8221;)); System.out.println(&#8220;OS Version = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;Version&#8221;)); \/\/ RuntimeMBean\uc73c\ub85c \ubd80\ud130 Runtime \uc815\ubcf4\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4. stdMBeanName = new ObjectName(&#8220;java.lang:type=Runtime&#8221;); System.out.println(&#8220;Name = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;Name&#8221;)); System.out.println(&#8220;Spec Name = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;SpecName&#8221;)); System.out.println(&#8220;VM Version = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;VmVerion&#8221;)); \/\/ ClassLoadingMBean \uc73c\ub85c \ubd80\ud130 \ub85c\ub529\ub41c \ud074\ub798\uc2a4 \uc815\ubcf4\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4. stdMBeanName = new ObjectName(&#8220;java.lang:type=ClassLoading &#8220;); System.out.println(&#8220;Loaded Class Count = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;LoadedClassCount&#8221;)); System.out.println(&#8220;Total Loaded Class Count = &#8221; + mbs_.getAttribute(stdMBeanName, &#8220;TotalLoadedClassCount&#8221;)); } catch (Exception e) { e.printStackTrace(); } } } &nbsp; \uc2e4\ud589\uacb0\uacfc : &nbsp; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"ngg_post_thumbnail":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[30,25,7],"tags":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5q9Zn-7a","jetpack-related-posts":[{"id":367,"url":"https:\/\/blog.box.kr\/?p=367","url_meta":{"origin":444,"position":0},"title":"[\ud38c]Scala \uc2dc\uc791\ud558\uae30","date":"2014-09-15","format":false,"excerpt":"\u00a0 http:\/\/ppassa.wordpress.com\/2012\/02\/19\/getting_started_scala\/ Scala \uc2dc\uc791\ud558\uae30 \uc694\uc998 \ub4e4\uc5b4\uc11c\u00a0Scala\ub97c \uacf5\ubd80\ud558\uace0 \uc788\ub2e4. \uc544\uc9c1 \ub9ce\uc774 \ubd80\uc871\ud558\uc9c0\ub9cc, \uc9c0\uae08\uae4c\uc9c0 \ubc30\uc6b4 \uac83\ub4e4 \uae30\ub85d\ud574\ub450\uace0, \ub610 \ud639\uc2dc \uc870\uae08\uc774\ub77c\ub3c4 \ub3c4\uc6c0\uc774 \ub418\ub294 \ubd84\ub4e4\uc774 \uc788\uc744 \uc9c0 \ubab0\ub77c \uacf5\uc720\ud574\ubcf4\uace0\uc790 \ud55c\ub2e4. 1. \ub4e4\uc5b4\uac00\uba70 \ubb58 \ub610 \ubc30\uc6cc\uc57c \ud55c\ub2e8 \ub9d0\uc778\uac00? \uc774\ubbf8 C++, Java, Python, Ruby, JavaScript \ub4f1 \ub9ce\uc740 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ub4e4\uc774 \uc788\ub294\ub370, \uc65c \uc790\uafb8 \uc0c8\ub85c\uc6b4 \uc5b8\uc5b4\uac00 \ub098\uc624\uace0 \uc788\ub0d0?\u2026","rel":"","context":"In &quot;\ucc38\uace0\ub97c \uc704\ud55c \uc800\uc7a5\ubb3c&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":369,"url":"https:\/\/blog.box.kr\/?p=369","url_meta":{"origin":444,"position":1},"title":"Scala, Clojure, Groovy \uadf8\ub9ac\uace0 \uac1c\ubc1c\uc790\uc758 \uc5b8\uc5b4","date":"2014-09-15","format":false,"excerpt":"http:\/\/www.okjsp.net\/seq\/216749 \u00a0 \u00a0 Scala, Clojure, Groovy \uadf8\ub9ac\uace0 \uac1c\ubc1c\uc790\uc758 \uc5b8\uc5b4 \uac1c\ubc1c\uc790\ub3c4 \uc138\ucee8\ub4dc \uc5b8\uc5b4 \ud639\uc740 \ud568\uc218\ud615 \uc5b8\uc5b4 \ud558\ub098\ucbe4\uc740 \ud574\uc57c \ud560 \uc2dc\uae30\uac00 \uc628\uac70 \uac19\uc2b5\ub2c8\ub2e4.\u00a0 \ubaa8\ubc14\uc77c\ub85c \uac08\uc544\ud0c0\uc9c0 \uc54a\ub294\ub2e4\uba74, \ud074\ub77c\uc6b0\ub4dc \ud658\uacbd, \uc5d4\ud130\ud504\ub77c\uc774\uc988 \ud658\uacbd\uc5d0\uc11c\ub294 \uc790\ubc14 \uc790\uccb4\ub9cc\uc73c\ub85c\ub294 \ud574\uacb0 \ud560 \uc218 \uc5c6\ub294 \uce21\uba74\ub4e4\uc774 \ub098\uc640\uc11c \uc138\ucee8\ub4dc \uc5b8\uc5b4\uc5d0 \ub300\ud55c \uc218\uc694\uac00 \uc810\uc9c4\uc801\uc73c\ub85c \uc0dd\uaca8\ub098\uc9c0 \uc54a\uc744\uae4c \ud558\ub294 \uc0dd\uac01\uc774 \ub9ce\uc774 \ub4dc\ub124\uc694.\u00a0 \ub300\ud45c\uc801\uc73c\ub85c\ub294, \uc678\uad6d \uc0ac\ub840\ub97c\u2026","rel":"","context":"In &quot;\ucc38\uace0\ub97c \uc704\ud55c \uc800\uc7a5\ubb3c&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":947,"url":"https:\/\/blog.box.kr\/?p=947","url_meta":{"origin":444,"position":2},"title":"System Monitoring command","date":"2015-07-30","format":false,"excerpt":"1. OS\/system $\u00a0vmstat 2 10 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/\u00a010 system resource status to every 2 sec. $ iostat 2 10 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ 10 I\/O status to every 2 sec. $\u00a0sar\u00a02 10 \u00a0 \u00a0 \u00a0\u2026","rel":"","context":"In &quot;\uae30\uc220&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":63,"url":"https:\/\/blog.box.kr\/?p=63","url_meta":{"origin":444,"position":3},"title":"JEUS\uc5d0\uc11c CLASSPATH \ucd94\uac00","date":"2014-06-12","format":false,"excerpt":"JEUS\uc5d0\uc11c CLASSPATH \ucd94\uac00 C:TmaxSoftJEUS5.0binjeus.properties.cmd \ud30c\uc77c \uc5f4\uc5b4\uc11c SET TOOL_CLASSPATH= \uc5d0 \ucd94\uac00 \ucee8\ud14c\uc774\ub108 \ubcc4 \uc601\uc5ed C:TmaxSoftJEUS5.0config`hostname`JEUSMain.xml <jeus-system> <node> <engine-container> <user-class-path> Description : Engine Container \ub97c \uc2e4\ud589\ud558\ub294 JVM\uc758 classpath\uc5d0 \ud328\uc2a4\ub97c \ucd94\uac00\ud55c\ub2e4. \uc774 \uc124\uc815\uc740 default Engine Container\uc5d0\ub294 \uc801\uc6a9\ub418\uc9c0 \uc54a\ub294\ub2e4. Value Description : \u201c;\u201d\ub85c \uad6c\ubd84\ub418\ub294 classpath(\uc720\ub2c9\uc2a4\uc758 \uacbd\uc6b0 \u201c:\u201d Value Type : token Example < user-class-path>c:mylibclasses;c:myliblibmylib.jar\u2026","rel":"","context":"In &quot;JEUS &amp; WEBToB&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":790,"url":"https:\/\/blog.box.kr\/?p=790","url_meta":{"origin":444,"position":4},"title":"[scrap] MQTT \uc2a4\ud130\ub514 \ub178\ud2b8","date":"2015-05-17","format":false,"excerpt":"http:\/\/bcho.tistory.com\/864 \u00a0 MQTT \uc2a4\ud130\ub514 \ub178\ud2b8 \uc2a4\ud130\ub514 \ub178\ud2b8 - IBM\uc5d0\uc11c \ub9cc\ub4ec - FB \uba54\uc2e0\uc838\uac00 \uc774\uac78 \uc0ac\uc6a9. \uad6d\ub0b4 \ud1b5\uc2e0\uc0ac PUSH \uc11c\ubc84\ub3c4 \uc774\uac78 \uc0ac\uc6a9\ud568 - \uc77c\ub2e8 FB\uac00 \uc4f0\ub2c8, \ub3d9\ub0a8\uc544\uad8c Telco\uc5d0\uc11c \ud328\ud0b7 \uac78\ub9ac\ub294 \ubb38\uc81c\ub294 \uc5c6\uc744\ub4ef - Qos 0,1,2\ub85c \ud574\uc11c, 2 \uc758 \uacbd\uc6b0 message delivery\ub97c gurantee\ud568 - \uc800\uc804\ub825!! \uc774\uac8c \uc911\uc694. - XMPP\uc5d0 \ube44\ud574\uc11c \ud6e8\uc52c \uacbd\ub7c9.\u2026","rel":"","context":"In &quot;\uae30\uc220&quot;","img":{"alt_text":"","src":"http:\/\/cfile4.uf.tistory.com\/image\/22233D4C52FCA9770BF1E1","width":350,"height":200},"classes":[]},{"id":531,"url":"https:\/\/blog.box.kr\/?p=531","url_meta":{"origin":444,"position":5},"title":"java ssl client \uac1c\ubc1c\uc2dc Trusting an expired certificate \uc624\ub958","date":"2014-12-29","format":false,"excerpt":"\ud558\uae30 \ucf54\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74 \ubaa8\ub4e0 \uc778\uc99d\uc11c( \ud14c\uc2a4\ud2b8, \uc720\ud6a8\uae30\uac04 \uc9c0\ub09c\uac70.. \ub4f1 )\uc744 \ubaa8\ub450 \uc2e0\ub8b0\ud574\ubc84\ub9b0\ub2e4. ( Real \uc801\uc6a9\ud558\uba74 \ubcf4\uc548\uc5d0 \ubb38\uc5d0 \uc788\uc74c. ) ====================================================================== try { SSLContext ctx = SSLContext.getInstance(\"TLS\"); ctx.init(new KeyManager[0], new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String name) throws CertificateException {} @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/444"}],"collection":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=444"}],"version-history":[{"count":0,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/444\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}