{"id":343,"date":"2016-05-15T04:06:00","date_gmt":"2016-05-15T04:06:00","guid":{"rendered":"http:\/\/blogs.softwareclue.com\/?p=343"},"modified":"2016-05-15T04:06:00","modified_gmt":"2016-05-15T04:06:00","slug":"java%e5%a0%86%e5%86%85%e5%ad%98","status":"publish","type":"post","link":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98","title":{"rendered":"Java\u5806\u5185\u5b58"},"content":{"rendered":"<blockquote><p>\u6765\u6e90\uff1a\u00a0\u6731\u5c0f\u53ae<\/p>\n<p>\u94fe\u63a5\uff1a\u00a0<a href=\"http:\/\/blog.csdn.net\/u013256816\/article\/details\/50764532\" target=\"_blank\">http:\/\/blog.csdn.net\/u013256816\/article\/details\/50764532<\/a><\/p><\/blockquote>\n<p>Java \u4e2d\u7684\u5806\u662f JVM \u6240\u7ba1\u7406\u7684\u6700\u5927\u7684\u4e00\u5757\u5185\u5b58\u7a7a\u95f4\uff0c\u4e3b\u8981\u7528\u4e8e\u5b58\u653e\u5404\u79cd\u7c7b\u7684\u5b9e\u4f8b\u5bf9\u8c61\u3002<\/p>\n<p>\u5728 Java \u4e2d\uff0c\u5806\u88ab\u5212\u5206\u6210\u4e24\u4e2a\u4e0d\u540c\u7684\u533a\u57df\uff1a\u65b0\u751f\u4ee3 ( Young )\u3001\u8001\u5e74\u4ee3 ( Old )\u3002\u65b0\u751f\u4ee3 ( Young ) \u53c8\u88ab\u5212\u5206\u4e3a\u4e09\u4e2a\u533a\u57df\uff1aEden\u3001From Survivor\u3001To Survivor\u3002<\/p>\n<p>\u8fd9\u6837\u5212\u5206\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u4f7f JVM \u80fd\u591f\u66f4\u597d\u7684\u7ba1\u7406\u5806\u5185\u5b58\u4e2d\u7684\u5bf9\u8c61\uff0c\u5305\u62ec\u5185\u5b58\u7684\u5206\u914d\u4ee5\u53ca\u56de\u6536\u3002<\/p>\n<p>\u5806\u7684\u5185\u5b58\u6a21\u578b\u5927\u81f4\u4e3a\uff1a<\/p>\n<p><img decoding=\"async\" class=\"\" src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1\" data-src=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/0?wx_fmt=jpeg\" data-type=\"jpeg\" data-ratio=\"0.5495145631067961\" data-w=\"515\" \/><\/p>\n<p>\u65b0\u751f\u4ee3\uff1aYoung Generation\uff0c\u4e3b\u8981\u7528\u6765\u5b58\u653e\u65b0\u751f\u7684\u5bf9\u8c61\u3002<\/p>\n<p>\u8001\u5e74\u4ee3\uff1aOld Generation\u6216\u8005\u79f0\u4f5cTenured Generation\uff0c\u4e3b\u8981\u5b58\u653e\u5e94\u7528\u7a0b\u5e8f\u58f0\u660e\u5468\u671f\u957f\u7684\u5185\u5b58\u5bf9\u8c61\u3002<\/p>\n<p>\u6c38\u4e45\u4ee3\uff1a\uff08\u65b9\u6cd5\u533a\uff0c\u4e0d\u5c5e\u4e8ejava\u5806\uff0c\u53e6\u4e00\u4e2a\u522b\u540d\u4e3a\u201c\u975e\u5806Non-Heap\u201d\u4f46\u662f\u4e00\u822c\u67e5\u770bPrintGCDetails\u90fd\u4f1a\u5e26\u4e0aPermGen\u533a\uff09\u662f\u6307\u5185\u5b58\u7684\u6c38\u4e45\u4fdd\u5b58\u533a\u57df\uff0c\u4e3b\u8981\u5b58\u653eClass\u548cMeta\u7684\u4fe1\u606f,Class\u5728\u88ab Load\u7684\u65f6\u5019\u88ab\u653e\u5165PermGen space\u533a\u57df. \u5b83\u548c\u548c\u5b58\u653eInstance\u7684Heap\u533a\u57df\u4e0d\u540c,GC(Garbage Collection)\u4e0d\u4f1a\u5728\u4e3b\u7a0b\u5e8f\u8fd0\u884c\u671f\u5bf9PermGen space\u8fdb\u884c\u6e05\u7406\uff0c\u6240\u4ee5\u5982\u679c\u4f60\u7684\u5e94\u7528\u4f1a\u52a0\u8f7d\u5f88\u591aClass\u7684\u8bdd,\u5c31\u5f88\u53ef\u80fd\u51fa\u73b0PermGen space\u9519\u8bef\u3002<\/p>\n<p>\u5806\u5927\u5c0f = \u65b0\u751f\u4ee3 + \u8001\u5e74\u4ee3\u3002\u5176\u4e2d\uff0c\u5806\u7684\u5927\u5c0f\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570 \u2013Xms\u3001-Xmx \u6765\u6307\u5b9a\u3002<\/p>\n<p>\u9ed8\u8ba4\u7684\uff0c\u65b0\u751f\u4ee3 ( Young ) \u4e0e\u8001\u5e74\u4ee3 ( Old ) \u7684\u6bd4\u4f8b\u7684\u503c\u4e3a 1:2 ( \u8be5\u503c\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570 \u2013XX:NewRatio \u6765\u6307\u5b9a )\uff0c\u5373\uff1a\u65b0\u751f\u4ee3 ( Young ) = 1\/3 \u7684\u5806\u7a7a\u95f4\u5927\u5c0f\u3002\u8001\u5e74\u4ee3 ( Old ) = 2\/3 \u7684\u5806\u7a7a\u95f4\u5927\u5c0f\u3002\u5176\u4e2d\uff0c\u65b0\u751f\u4ee3 ( Young ) \u88ab\u7ec6\u5206\u4e3a Eden \u548c \u4e24\u4e2a Survivor \u533a\u57df\uff0c\u8fd9\u4e24\u4e2a Survivor \u533a\u57df\u5206\u522b\u88ab\u547d\u540d\u4e3a from \u548c to\uff0c\u4ee5\u793a\u533a\u5206\u3002<\/p>\n<p>\u9ed8\u8ba4\u7684\uff0cEdem : from : to = 8 : 1 : 1 ( \u53ef\u4ee5\u901a\u8fc7\u53c2\u6570 \u2013XX:SurvivorRatio \u6765\u8bbe\u5b9a )\uff0c\u5373\uff1a Eden = 8\/10 \u7684\u65b0\u751f\u4ee3\u7a7a\u95f4\u5927\u5c0f\uff0cfrom = to = 1\/10 \u7684\u65b0\u751f\u4ee3\u7a7a\u95f4\u5927\u5c0f\u3002<\/p>\n<p>JVM \u6bcf\u6b21\u53ea\u4f1a\u4f7f\u7528 Eden \u548c\u5176\u4e2d\u7684\u4e00\u5757 Survivor \u533a\u57df\u6765\u4e3a\u5bf9\u8c61\u670d\u52a1\uff0c\u6240\u4ee5\u65e0\u8bba\u4ec0\u4e48\u65f6\u5019\uff0c\u603b\u662f\u6709\u4e00\u5757 Survivor \u533a\u57df\u662f\u7a7a\u95f2\u7740\u7684\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u65b0\u751f\u4ee3\u5b9e\u9645\u53ef\u7528\u7684\u5185\u5b58\u7a7a\u95f4\u4e3a 9\/10 ( \u537390% )\u7684\u65b0\u751f\u4ee3\u7a7a\u95f4\u3002<\/p>\n<p><strong>\u56de\u6536\u65b9\u6cd5\u533a\uff08\u9644\u52a0\u8865\u5145\uff09<\/strong><\/p>\n<p>\u5f88\u591a\u4eba\u8ba4\u4e3a\u65b9\u6cd5\u533a\uff08\u6216\u8005HotSpot\u865a\u62df\u673a\u4e2d\u7684\u6c38\u4e45\u4ee3[PermGen]\uff09\u662f\u6ca1\u6709\u5783\u573e\u6536\u96c6\u7684\uff0cjava\u865a\u62df\u673a\u89c4\u8303\u4e2d\u786e\u5b9e\u8bf4\u8fc7\u53ef\u4ee5\u4e0d\u8981\u6c42\u865a\u62df\u673a\u5728\u65b9\u6cd5\u533a\u5b9e\u73b0\u5783\u573e\u6536\u96c6\uff0c\u800c\u4e14\u5728\u65b9\u6cd5\u53bb\u4e2d\u8fdb\u884c\u5783\u573e\u6536\u96c6\u7684\u201c\u6027\u4ef7\u6bd4\u201d\u4e00\u822c\u6bd4\u8f83\u4f4e\uff1a\u5728\u5806\u4e2d\uff0c\u5c24\u5176\u662f\u5728\u65b0\u751f\u4ee3\u4e2d\uff0c\u5e38\u89c4\u5e94\u7528\u8fdb\u884c\u4e00\u6b21\u5783\u573e\u6536\u96c6\u4e00\u822c\u53ef\u4ee5\u56de\u653670%-95%\u7684\u7a7a\u95f4\uff0c\u800c\u6c38\u4e45\u4ee3\u7684\u5783\u573e\u6536\u96c6\u6548\u7387\u8fdc\u4f4e\u4e8e\u6b64\u3002<\/p>\n<p>\u6c38\u4e45\u4ee3\u7684\u5783\u573e\u6536\u96c6\u4e3b\u8981\u56de\u6536\u4e24\u90e8\u5206\u5185\u5bb9\uff1a\u5e9f\u5f03\u7684\u5e38\u91cf\u548c\u65e0\u7528\u7684\u7c7b\u3002<\/p>\n<p>1. \u5e9f\u5f03\u7684\u5e38\u91cf\uff1a\u56de\u6536\u5e9f\u5f03\u5e38\u91cf\u4e0e\u56de\u6536java\u5806\u4e2d\u7684\u5bf9\u8c61\u975e\u5e38\u7c7b\u4f3c\u3002\u4ee5\u5e38\u91cf\u6c60\u5b57\u9762\u91cf\u7684\u56de\u6536\u4e3a\u4f8b\uff0c\u52a0\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\u201cabc\u201d\u5df2\u7ecf\u8fdb\u5165\u4e86\u5e38\u91cf\u6c60\u4e2d\uff0c\u4f46\u662f\u5f53\u524d\u7cfb\u7edf\u6ca1\u6709\u4efb\u4f55\u4e00\u4e2aString\u5bf9\u8c61\u662f\u53eb\u505a\u201dabc\u201d\u7684\uff0c\u6362\u53e5\u8bdd\u8bf4\uff0c\u5c31\u662f\u6709\u4efb\u4f55String\u5bf9\u8c61\u5e94\u7528\u5e38\u91cf\u6c60\u4e2d\u7684\u201dabc\u201d\u5e38\u91cf\uff0c\u4e5f\u6ca1\u6709\u5176\u4ed6\u5730\u65b9\u5f15\u7528\u4e86\u8fd9\u4e2a\u5b57\u9762\u91cf\uff0c\u5982\u679c\u8fd9\u65f6\u53d1\u751f\u5185\u5b58\u56de\u6536\uff0c\u800c\u4e14\u5fc5\u8981\u7684\u8bdd\uff0c\u8fd9\u4e2a\u201cabc\u201d\u5e38\u91cf\u5c31\u4f1a\u88ab\u7cfb\u7edf\u6e05\u7406\u51fa\u5e38\u91cf\u6c60\u3002\u5e38\u91cf\u6c60\u4e2d\u7684\u5176\u4ed6\u7c7b\uff08\u63a5\u53e3\uff09\u3001\u65b9\u6cd5\u3001\u5b57\u6bb5\u7684\u7b26\u53f7\u5f15\u7528\u4e5f\u4e0e\u6b64\u7c7b\u4f3c\u3002(\u6ce8\uff1ajdk1.7\u53ca\u5176\u4e4b\u540e\u7684\u7248\u672c\u5df2\u7ecf\u5c06\u5e38\u91cf\u6c60\u4ece\u6c38\u4e45\u4ee3\u4e2d\u79fb\u51fa)<\/p>\n<p>2. \u65e0\u7528\u7684\u7c7b\uff1a\u7c7b\u9700\u8981\u540c\u65f6\u6ee1\u8db3\u4e0b\u97623\u4e2a\u6761\u4ef6\u624d\u80fd\u7b97\u662f\u201c\u65e0\u7528\u7684\u7c7b\u201d\uff1a<\/p>\n<ul class=\" list-paddingleft-2\">\n<li>\u8be5\u7c7b\u6240\u6709\u7684\u5b9e\u4f8b\u90fd\u5df2\u7ecf\u88ab\u56de\u6536\uff0c\u4e5f\u5c31\u662fjava\u5806\u4e2d\u4e0d\u5b58\u5728\u8be5\u7c7b\u7684\u4efb\u4f55\u5b9e\u4f8b\u3002<\/li>\n<li>\u52a0\u8f7d\u8be5\u7c7b\u7684ClassLoader\u5df2\u7ecf\u88ab\u56de\u6536<\/li>\n<li>\u8be5\u7c7b\u5bf9\u5e94\u7684java.lang.Class\u5bf9\u8c61\u6ca1\u6709\u5728\u4efb\u4f55\u5730\u65b9\u88ab\u5f15\u7528\uff0c\u65e0\u6cd5\u5728\u4efb\u4f55\u5730\u65b9\u901a\u8fc7\u53cd\u5c04\u8bbf\u95ee\u8be5\u7c7b\u7684\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<p>\u865a\u62df\u673a\u53ef\u4ee5\u5bf9\u6ee1\u8db3\u4e0a\u8ff03\u4e2a\u6761\u4ef6\u7684\u65e0\u7528\u7c7b\u8fdb\u884c\u56de\u6536\uff0c\u8fd9\u91cc\u8bf4\u7684\u4ec5\u4ec5\u662f\u201d\u53ef\u4ee5\u201c\uff0c\u800c\u5e76\u4e0d\u548c\u5bf9\u8c61\u4e00\u6837\uff0c\u4e0d\u4f7f\u7528\u4e86\u5c31\u5fc5\u7136\u4f1a\u56de\u6536\u3002\u662f\u5426\u5bf9\u7c7b\u8fdb\u884c\u56de\u6536\uff0cHotSpot\u865a\u62df\u673a\u63d0\u4f9b\u4e86-Xnoclassgc\uff08\u5173\u95edCLASS\u7684\u5783\u573e\u56de\u6536\u529f\u80fd\uff0c\u5c31\u662f\u865a\u62df\u673a\u52a0\u8f7d\u7684\u7c7b\uff0c\u5373\u4fbf\u662f\u4e0d\u4f7f\u7528\uff0c\u6ca1\u6709\u5b9e\u4f8b\u4e5f\u4e0d\u4f1a\u56de\u6536\u3002\uff09\u53c2\u6570\u8fdb\u884c\u63a7\u5236\u3002<\/p>\n<p>\u5728\u5927\u91cf\u4f7f\u7528\u53cd\u5c04\u3001\u52a8\u6001\u4ee3\u7406\u3001CGlib\u7b49ByteCode\u6846\u67b6\u3001\u52a8\u6001\u751f\u6210JSP\u4ee5\u53caOSGi\u8fd9\u7c7b\u9891\u7e41\u81ea\u5b9a\u4e49ClassLoader\u7684\u573a\u666f\u90fd\u9700\u8981\u865a\u62df\u673a\u5177\u5907\u7c7b\u5378\u8f7d\u7684\u529f\u80fd\uff0c\u4ee5\u4fdd\u8bc1\u6c38\u4e45\u4ee3\u4e0d\u4f1a\u6ea2\u51fa\u3002<\/p>\n<p><strong>GC<\/strong><\/p>\n<p>Java \u4e2d\u7684\u5806\u4e5f\u662f GC \u6536\u96c6\u5783\u573e\u7684\u4e3b\u8981\u533a\u57df\u3002GC \u5206\u4e3a\u4e24\u79cd\uff1aMinor GC\u3001Full GC ( \u6216\u79f0\u4e3a Major GC )\u3002<\/p>\n<p>Minor GC \u662f\u53d1\u751f\u5728\u65b0\u751f\u4ee3\u4e2d\u7684\u5783\u573e\u6536\u96c6\u52a8\u4f5c\uff0c\u6240\u91c7\u7528\u7684\u662f\u590d\u5236\u7b97\u6cd5\u3002<\/p>\n<p>\u65b0\u751f\u4ee3\u51e0\u4e4e\u662f\u6240\u6709 Java \u5bf9\u8c61\u51fa\u751f\u7684\u5730\u65b9\uff0c\u5373 Java \u5bf9\u8c61\u7533\u8bf7\u7684\u5185\u5b58\u4ee5\u53ca\u5b58\u653e\u90fd\u662f\u5728\u8fd9\u4e2a\u5730\u65b9\u3002Java \u4e2d\u7684\u5927\u90e8\u5206\u5bf9\u8c61\u901a\u5e38\u4e0d\u9700\u957f\u4e45\u5b58\u6d3b\uff0c\u5177\u6709\u671d\u751f\u5915\u706d\u7684\u6027\u8d28\u3002<\/p>\n<p>\u5f53\u4e00\u4e2a\u5bf9\u8c61\u88ab\u5224\u5b9a\u4e3a \u201c\u6b7b\u4ea1\u201d \u7684\u65f6\u5019\uff0cGC \u5c31\u6709\u8d23\u4efb\u6765\u56de\u6536\u6389\u8fd9\u90e8\u5206\u5bf9\u8c61\u7684\u5185\u5b58\u7a7a\u95f4\u3002\u65b0\u751f\u4ee3\u662f GC \u6536\u96c6\u5783\u573e\u7684\u9891\u7e41\u533a\u57df\u3002<\/p>\n<p>\u5f53\u5bf9\u8c61\u5728 Eden ( \u5305\u62ec\u4e00\u4e2a Survivor \u533a\u57df\uff0c\u8fd9\u91cc\u5047\u8bbe\u662f from \u533a\u57df ) \u51fa\u751f\u540e\uff0c\u5728\u7ecf\u8fc7\u4e00\u6b21 Minor GC \u540e\uff0c\u5982\u679c\u5bf9\u8c61\u8fd8\u5b58\u6d3b\uff0c\u5e76\u4e14\u80fd\u591f\u88ab\u53e6\u5916\u4e00\u5757 Survivor \u533a\u57df\u6240\u5bb9\u7eb3( \u4e0a\u9762\u5df2\u7ecf\u5047\u8bbe\u4e3a from \u533a\u57df\uff0c\u8fd9\u91cc\u5e94\u4e3a to \u533a\u57df\uff0c\u5373 to \u533a\u57df\u6709\u8db3\u591f\u7684\u5185\u5b58\u7a7a\u95f4\u6765\u5b58\u50a8 Eden \u548c from \u533a\u57df\u4e2d\u5b58\u6d3b\u7684\u5bf9\u8c61 )\uff0c\u5219\u4f7f\u7528\u590d\u5236\u7b97\u6cd5\u5c06\u8fd9\u4e9b\u4ecd\u7136\u8fd8\u5b58\u6d3b\u7684\u5bf9\u8c61\u590d\u5236\u5230\u53e6\u5916\u4e00\u5757 Survivor \u533a\u57df ( \u5373 to \u533a\u57df ) \u4e2d\uff0c\u7136\u540e\u6e05\u7406\u6240\u4f7f\u7528\u8fc7\u7684 Eden \u4ee5\u53ca Survivor \u533a\u57df ( \u5373 from \u533a\u57df )\uff0c\u5e76\u4e14\u5c06\u8fd9\u4e9b\u5bf9\u8c61\u7684\u5e74\u9f84\u8bbe\u7f6e\u4e3a1\uff0c\u4ee5\u540e\u5bf9\u8c61\u5728 Survivor \u533a\u6bcf\u71ac\u8fc7\u4e00\u6b21 Minor GC\uff0c\u5c31\u5c06\u5bf9\u8c61\u7684\u5e74\u9f84 + 1\uff0c\u5f53\u5bf9\u8c61\u7684\u5e74\u9f84\u8fbe\u5230\u67d0\u4e2a\u503c\u65f6 ( \u9ed8\u8ba4\u662f 15 \u5c81\uff0c\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570 -XX:MaxTenuringThreshold \u6765\u8bbe\u5b9a )\uff0c\u8fd9\u4e9b\u5bf9\u8c61\u5c31\u4f1a\u6210\u4e3a\u8001\u5e74\u4ee3\u3002<\/p>\n<p>\u4f46\u8fd9\u4e5f\u4e0d\u662f\u4e00\u5b9a\u7684\uff0c\u5bf9\u4e8e\u4e00\u4e9b\u8f83\u5927\u7684\u5bf9\u8c61 ( \u5373\u9700\u8981\u5206\u914d\u4e00\u5757\u8f83\u5927\u7684\u8fde\u7eed\u5185\u5b58\u7a7a\u95f4 ) \u5219\u662f\u76f4\u63a5\u8fdb\u5165\u5230\u8001\u5e74\u4ee3\u3002\u865a\u62df\u673a\u63d0\u4f9b\u4e86\u4e00\u4e2a-XX:PretenureSizeThreshold\u53c2\u6570\uff0c\u4ee4\u5927\u4e8e\u8fd9\u4e2a\u8bbe\u7f6e\u503c\u7684\u5bf9\u8c61\u76f4\u63a5\u5728\u8001\u5e74\u4ee3\u5206\u914d\u3002\u8fd9\u6837\u505a\u7684\u76ee\u7684\u662f\u907f\u514d\u5728Eden\u533a\u53ca\u4e24\u4e2aSurvivor\u533a\u4e4b\u95f4\u53d1\u751f\u5927\u91cf\u7684\u5185\u5b58\u590d\u5236\uff08\u65b0\u751f\u4ee3\u91c7\u7528\u590d\u5236\u7b97\u6cd5\u6536\u96c6\u5185\u5b58\uff09\u3002<\/p>\n<p>\u4e3a\u4e86\u80fd\u591f\u66f4\u597d\u7684\u9002\u5e94\u4e0d\u540c\u7684\u7a0b\u5e8f\u7684\u5185\u5b58\u72b6\u51b5\uff0c\u865a\u62df\u673a\u5e76\u4e0d\u662f\u6c38\u8fdc\u5730\u8981\u6c42\u5bf9\u8c61\u7684\u5e74\u9f84\u5fc5\u987b\u8fbe\u5230\u4e86MaxTenuringThreshold\u624d\u80fd\u664b\u5347\u8001\u5e74\u4ee3\uff0c\u5982\u679c\u5728Survivor\u7a7a\u95f4\u4e2d\u76f8\u540c\u5e74\u9f84\u6240\u6709\u5bf9\u8c61\u5927\u5c0f\u7684\u603b\u548c\u5927\u4e8eSurvivor\u7a7a\u95f4\u7684\u4e00\u534a\uff0c\u5e74\u9f84\u5927\u4e8e\u6216\u7b49\u4e8e\u8be5\u5e74\u9f84\u7684\u5bf9\u8c61\u53ef\u4ee5\u76f4\u63a5\u8fdb\u5165\u8001\u5e74\u4ee3\uff0c\u65e0\u9700\u7b49\u5230MaxTenuringThreshold\u4e2d\u8981\u6c42\u7684\u5e74\u9f84\u3002<\/p>\n<p>Full GC \u662f\u53d1\u751f\u5728\u8001\u5e74\u4ee3\u7684\u5783\u573e\u6536\u96c6\u52a8\u4f5c\uff0c\u6240\u91c7\u7528\u7684\u662f\u201c\u6807\u8bb0-\u6e05\u9664\u201d\u6216\u8005\u201c\u6807\u8bb0-\u6574\u7406\u201d\u7b97\u6cd5\u3002<\/p>\n<p>\u73b0\u5b9e\u7684\u751f\u6d3b\u4e2d\uff0c\u8001\u5e74\u4ee3\u7684\u4eba\u901a\u5e38\u4f1a\u6bd4\u65b0\u751f\u4ee3\u7684\u4eba \u201c\u65e9\u6b7b\u201d\u3002\u5806\u5185\u5b58\u4e2d\u7684\u8001\u5e74\u4ee3(Old)\u4e0d\u540c\u4e8e\u8fd9\u4e2a\uff0c\u8001\u5e74\u4ee3\u91cc\u9762\u7684\u5bf9\u8c61\u51e0\u4e4e\u4e2a\u4e2a\u90fd\u662f\u5728 Survivor \u533a\u57df\u4e2d\u71ac\u8fc7\u6765\u7684\uff0c\u5b83\u4eec\u662f\u4e0d\u4f1a\u90a3\u4e48\u5bb9\u6613\u5c31 \u201c\u6b7b\u6389\u201d \u4e86\u7684\u3002\u56e0\u6b64\uff0cFull GC \u53d1\u751f\u7684\u6b21\u6570\u4e0d\u4f1a\u6709 Minor GC \u90a3\u4e48\u9891\u7e41\uff0c\u5e76\u4e14\u505a\u4e00\u6b21 Full GC \u8981\u6bd4\u8fdb\u884c\u4e00\u6b21 Minor GC \u7684\u65f6\u95f4\u66f4\u957f\u3002<\/p>\n<p>\u5728\u53d1\u751fMinorGC\u4e4b\u524d\uff0c\u865a\u62df\u673a\u4f1a\u5148\u68c0\u67e5\u8001\u5e74\u4ee3\u6700\u5927\u53ef\u7528\u7684\u8fde\u7eed\u7a7a\u95f4\u662f\u5426\u5927\u4e8e\u65b0\u751f\u4ee3\u6240\u6709\u5bf9\u8c61\u603b\u7a7a\u95f4\uff0c\u5982\u679c\u8fd9\u4e2a\u6761\u4ef6\u6210\u7acb\uff0c\u90a3\u4e48MinorGC\u53ef\u4ee5\u786e\u4fdd\u662f\u5b89\u5168\u7684\u3002\u5982\u679c\u4e0d\u6210\u7acb\uff0c\u5219\u865a\u62df\u673a\u4f1a\u67e5\u770bHandlePromotionFailure\u8bbe\u7f6e\u503c\u662f\u5426\u5141\u8bb8\u62c5\u4fdd\u5931\u8d25\u3002\u5982\u679c\u5141\u8bb8\uff0c\u90a3\u4e48\u4f1a\u7ee7\u7eed\u68c0\u67e5\u8001\u5e74\u4ee3\u6700\u5927\u53ef\u7528\u7684\u8fde\u7eed\u7a7a\u95f4\u662f\u5426\u5927\u4e8e\u5386\u6b21\u664b\u5347\u5230\u8001\u5e74\u4ee3\u5bf9\u8c61\u7684\u5e73\u5747\u5927\u5c0f\uff0c\u5982\u679c\u5927\u4e8e\uff0c\u5c06\u5c1d\u8bd5\u8fd9\u8fdb\u884c\u4e00\u6b21MinorGC\uff0c\u5c3d\u7ba1\u8fd9\u6b21MinorGC\u662f\u6709\u98ce\u9669\u7684\uff1b\u5982\u679c\u5c0f\u4e8e\uff0c\u6216\u8005HandlePromptionFailure\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u5192\u9669\uff0c\u90a3\u8fd9\u662f\u4e5f\u8981\u6539\u4e3a\u8fdb\u884c\u4e00\u6b21FullGC.<\/p>\n<p>\u53e6\u5916\uff0c\u6807\u8bb0-\u6e05\u9664\u7b97\u6cd5\u6536\u96c6\u5783\u573e\u7684\u65f6\u5019\u4f1a\u4ea7\u751f\u8bb8\u591a\u7684\u5185\u5b58\u788e\u7247 ( \u5373\u4e0d\u8fde\u7eed\u7684\u5185\u5b58\u7a7a\u95f4 )\uff0c\u6b64\u540e\u9700\u8981\u4e3a\u8f83\u5927\u7684\u5bf9\u8c61\u5206\u914d\u5185\u5b58\u7a7a\u95f4\u65f6\uff0c\u82e5\u65e0\u6cd5\u627e\u5230\u8db3\u591f\u7684\u8fde\u7eed\u7684\u5185\u5b58\u7a7a\u95f4\uff0c\u5c31\u4f1a\u63d0\u524d\u89e6\u53d1\u4e00\u6b21 GC \u7684\u6536\u96c6\u52a8\u4f5c\u3002<\/p>\n<p><strong>GC\u65e5\u5fd7<\/strong><\/p>\n<p>\u9996\u5148\u770b\u4e00\u4e0b\u5982\u4e0b\u4ee3\u7801\uff1a<\/p>\n<blockquote><p>package jvm;<\/p>\n<p>&nbsp;<\/p>\n<p>public class PrintGCDetails<\/p>\n<p>{<\/p>\n<p>public static void main(String[] args)<\/p>\n<p>{<\/p>\n<p>Object obj = new Object();<\/p>\n<p>System.gc();<\/p>\n<p>System.out.println();<\/p>\n<p>obj = new Object();<\/p>\n<p>obj = new Object();<\/p>\n<p>System.gc();<\/p>\n<p>System.out.println();<\/p>\n<p>}<\/p>\n<p>}<\/p><\/blockquote>\n<p>\u8bbe\u7f6eJVM\u53c2\u6570\u4e3a-XX:+PrintGCDetails,\u6267\u884c\u7ed3\u679c\u5982\u4e0b:<\/p>\n<blockquote><p>[GC [PSYoungGen: 1019K-&gt;568K(28672K)] 1019K-&gt;568K(92672K), 0.0529244 secs] [Times: user=0.00 sys=0.00, real=0.06 secs]<\/p>\n<p>{\u535a\u4e3b\u81ea\u5b9a\u4e49\u6ce8\u89e3\uff1a[GC [\u65b0\u751f\u4ee3: MinorGC\u524d\u65b0\u751f\u4ee3\u5185\u5b58\u4f7f\u7528-&gt;MinorGC\u540e\u65b0\u751f\u4ee3\u5185\u5b58\u4f7f\u7528(\u65b0\u751f\u4ee3\u603b\u7684\u5185\u5b58\u5927\u5c0f)] MinorGC\u524dJVM\u5806\u5185\u5b58\u4f7f\u7528\u7684\u5927\u5c0f-&gt;MinorGC\u540eJVM\u5806\u5185\u5b58\u4f7f\u7528\u7684\u5927\u5c0f(\u5806\u7684\u53ef\u7528\u5185\u5b58\u5927\u5c0f), MinorGC\u603b\u8017\u65f6] [Times: \u7528\u6237\u8017\u65f6=0.00 \u7cfb\u7edf\u8017\u65f6=0.00, \u5b9e\u9645\u8017\u65f6=0.06 secs] }<\/p>\n<p>[Full GC [PSYoungGen: 568K-&gt;0K(28672K)] [ParOldGen: 0K-&gt;478K(64000K)] 568K-&gt;478K(92672K) [PSPermGen: 2484K-&gt;2483K(21504K)], 0.0178331 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]<\/p>\n<p>{\u535a\u4e3b\u81ea\u5b9a\u4e49\u6ce8\u89e3\uff1a[Full GC [PSYoungGen: 568K-&gt;0K(28672K)] [\u8001\u5e74\u4ee3: FullGC\u524d\u8001\u5e74\u4ee3\u5185\u5b58\u4f7f\u7528-&gt;FullGC\u540e\u8001\u5e74\u4ee3\u5185\u5b58\u4f7f\u7528(\u8001\u5e74\u4ee3\u603b\u7684\u5185\u5b58\u5927\u5c0f)] FullGC\u524dJVM\u5806\u5185\u5b58\u4f7f\u7528\u7684\u5927\u5c0f-&gt;FullGC\u540eJVM\u5806\u5185\u5b58\u4f7f\u7528\u7684\u5927\u5c0f(\u5806\u7684\u53ef\u7528\u5185\u5b58\u5927\u5c0f) [\u6c38\u4e45\u4ee3: 2484K-&gt;2483K(21504K)], 0.0178331 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]}<\/p>\n<p>&nbsp;<\/p>\n<p>[GC [PSYoungGen: 501K-&gt;64K(28672K)] 980K-&gt;542K(92672K), 0.0005080 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]<\/p>\n<p>[Full GC [PSYoungGen: 64K-&gt;0K(28672K)] [ParOldGen: 478K-&gt;479K(64000K)] 542K-&gt;479K(92672K) [PSPermGen: 2483K-&gt;2483K(21504K)], 0.0133836 secs] [Times: user=0.05 sys=0.00, real=0.01 secs]<\/p>\n<p>&nbsp;<\/p>\n<p>Heap<\/p>\n<p>PSYoungGen \u00a0 \u00a0 \u00a0total 28672K, used 1505K [0x00000000e0a00000, 0x00000000e2980000, 0x0000000100000000)<\/p>\n<p>eden space 25088K, 6% used [0x00000000e0a00000,0x00000000e0b78690,0x00000000e2280000)<\/p>\n<p>from space 3584K, 0% used [0x00000000e2600000,0x00000000e2600000,0x00000000e2980000)<\/p>\n<p>to \u00a0 space 3584K, 0% used [0x00000000e2280000,0x00000000e2280000,0x00000000e2600000)<\/p>\n<p>ParOldGen \u00a0 \u00a0 \u00a0 total 64000K, used 479K [0x00000000a1e00000, 0x00000000a5c80000, 0x00000000e0a00000)<\/p>\n<p>object space 64000K, 0% used [0x00000000a1e00000,0x00000000a1e77d18,0x00000000a5c80000)<\/p>\n<p>PSPermGen \u00a0 \u00a0 \u00a0 total 21504K, used 2492K [0x000000009cc00000, 0x000000009e100000, 0x00000000a1e00000)<\/p>\n<p>object space 21504K, 11% used [0x000000009cc00000,0x000000009ce6f2d0,0x000000009e100000)<\/p><\/blockquote>\n<p>\u6ce8\uff1a\u4f60\u53ef\u4ee5\u7528JConsole\u6216\u8005Runtime.getRuntime().maxMemory(),Runtime.getRuntime().totalMemory(), Runtime.getRuntime().freeMemory()\u6765\u67e5\u770bJava\u4e2d\u5806\u5185\u5b58\u7684\u5927\u5c0f\u3002<\/p>\n<p>\u518d\u770b\u4e00\u4e2a\u4f8b\u5b50\uff1a<\/p>\n<blockquote><p>package jvm;<\/p>\n<p>public class PrintGCDetails2<\/p>\n<p>{<\/p>\n<p>\/**<\/p>\n<p>* -Xms60m -Xmx60m -Xmn20m -XX:NewRatio=2 ( \u82e5 Xms = Xmx, \u5e76\u4e14\u8bbe\u5b9a\u4e86 Xmn,<\/p>\n<p>* \u90a3\u4e48\u8be5\u9879\u914d\u7f6e\u5c31\u4e0d\u9700\u8981\u914d\u7f6e\u4e86 ) -XX:SurvivorRatio=8 -XX:PermSize=30m -XX:MaxPermSize=30m<\/p>\n<p>* -XX:+PrintGCDetails<\/p>\n<p>*\/<\/p>\n<p>public static void main(String[] args)<\/p>\n<p>{<\/p>\n<p>new PrintGCDetails2().doTest();<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>public void doTest()<\/p>\n<p>{<\/p>\n<p>Integer M = new Integer(1024 * 1024 * 1); \/\/ \u5355\u4f4d, \u5146(M)<\/p>\n<p>byte[] bytes = new byte[1 * M]; \/\/ \u7533\u8bf7 1M \u5927\u5c0f\u7684\u5185\u5b58\u7a7a\u95f4<\/p>\n<p>bytes = null; \/\/ \u65ad\u5f00\u5f15\u7528\u94fe<\/p>\n<p>System.gc(); \/\/ \u901a\u77e5 GC \u6536\u96c6\u5783\u573e<\/p>\n<p>System.out.println();<\/p>\n<p>bytes = new byte[1 * M]; \/\/ \u91cd\u65b0\u7533\u8bf7 1M \u5927\u5c0f\u7684\u5185\u5b58\u7a7a\u95f4<\/p>\n<p>bytes = new byte[1 * M]; \/\/ \u518d\u6b21\u7533\u8bf7 1M \u5927\u5c0f\u7684\u5185\u5b58\u7a7a\u95f4<\/p>\n<p>System.gc();<\/p>\n<p>System.out.println();<\/p>\n<p>}<\/p>\n<p>}<\/p><\/blockquote>\n<p>\u8fd0\u884c\u7ed3\u679c\uff1a<\/p>\n<blockquote><p>[GC [PSYoungGen: 2007K-&gt;568K(18432K)] 2007K-&gt;568K(59392K), 0.0059377 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]<\/p>\n<p>[Full GC [PSYoungGen: 568K-&gt;0K(18432K)] [ParOldGen: 0K-&gt;479K(40960K)] 568K-&gt;479K(59392K) [PSPermGen: 2484K-&gt;2483K(30720K)], 0.0223249 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]<\/p>\n<p>&nbsp;<\/p>\n<p>[GC [PSYoungGen: 3031K-&gt;1056K(18432K)] 3510K-&gt;1535K(59392K), 0.0140169 secs] [Times: user=0.05 sys=0.00, real=0.01 secs]<\/p>\n<p>[Full GC [PSYoungGen: 1056K-&gt;0K(18432K)] [ParOldGen: 479K-&gt;1503K(40960K)] 1535K-&gt;1503K(59392K) [PSPermGen: 2486K-&gt;2486K(30720K)], 0.0119497 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]<\/p>\n<p>&nbsp;<\/p>\n<p>Heap<\/p>\n<p>PSYoungGen \u00a0 \u00a0 \u00a0total 18432K, used 163K [0x00000000fec00000, 0x0000000100000000, 0x0000000100000000)<\/p>\n<p>eden space 16384K, 1% used [0x00000000fec00000,0x00000000fec28ff0,0x00000000ffc00000)<\/p>\n<p>from space 2048K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x0000000100000000)<\/p>\n<p>to \u00a0 space 2048K, 0% used [0x00000000ffc00000,0x00000000ffc00000,0x00000000ffe00000)<\/p>\n<p>ParOldGen \u00a0 \u00a0 \u00a0 total 40960K, used 1503K [0x00000000fc400000, 0x00000000fec00000, 0x00000000fec00000)<\/p>\n<p>object space 40960K, 3% used [0x00000000fc400000,0x00000000fc577e10,0x00000000fec00000)<\/p>\n<p>PSPermGen \u00a0 \u00a0 \u00a0 total 30720K, used 2493K [0x00000000fa600000, 0x00000000fc400000, 0x00000000fc400000)<\/p>\n<p>object space 30720K, 8% used [0x00000000fa600000,0x00000000fa86f4f0,0x00000000fc400000)<\/p><\/blockquote>\n<p>\u4ece\u6253\u5370\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa\uff0c\u5806\u4e2d\u65b0\u751f\u4ee3\u7684\u5185\u5b58\u7a7a\u95f4\u4e3a 18432K ( \u7ea6 18M )\uff0ceden \u7684\u5185\u5b58\u7a7a\u95f4\u4e3a 16384K ( \u7ea6 16M)\uff0cfrom \/ to survivor \u7684\u5185\u5b58\u7a7a\u95f4\u4e3a 2048K ( \u7ea6 2M)\u3002<\/p>\n<p>\u8fd9\u91cc\u6240\u914d\u7f6e\u7684 Xmn \u4e3a 20M\uff0c\u4e5f\u5c31\u662f\u6307\u5b9a\u4e86\u65b0\u751f\u4ee3\u7684\u5185\u5b58\u7a7a\u95f4\u4e3a 20M\uff0c\u53ef\u662f\u4ece\u6253\u5370\u7684\u5806\u4fe1\u606f\u6765\u770b\uff0c\u65b0\u751f\u4ee3\u600e\u4e48\u5c31\u53ea\u6709 18M \u5462? \u53e6\u5916\u7684 2M \u54ea\u91cc\u53bb\u4e86?<\/p>\n<p>\u522b\u6025\uff0c\u662f\u8fd9\u6837\u7684\u3002\u65b0\u751f\u4ee3 = eden + from + to = 16 + 2 + 2 = 20M\uff0c\u53ef\u89c1\u65b0\u751f\u4ee3\u7684\u5185\u5b58\u7a7a\u95f4\u786e\u5b9e\u662f\u6309 Xmn \u53c2\u6570\u5206\u914d\u5f97\u5230\u7684\u3002<\/p>\n<p>\u800c\u4e14\u8fd9\u91cc\u6307\u5b9a\u4e86 SurvivorRatio = 8\uff0c\u56e0\u6b64\uff0ceden = 8\/10 \u7684\u65b0\u751f\u4ee3\u7a7a\u95f4 = 8\/10 * 20 = 16M\u3002from = to = 1\/10 \u7684\u65b0\u751f\u4ee3\u7a7a\u95f4 = 1\/10 * 20 = 2M\u3002<\/p>\n<p>\u5806\u4fe1\u606f\u4e2d\u65b0\u751f\u4ee3\u7684 total 18432K \u662f\u8fd9\u6837\u6765\u7684\uff1a eden + 1 \u4e2a survivor = 16384K + 2048K = 18432K\uff0c\u5373\u7ea6\u4e3a 18M\u3002<\/p>\n<p>\u56e0\u4e3a jvm \u6bcf\u6b21\u53ea\u662f\u7528\u65b0\u751f\u4ee3\u4e2d\u7684 eden \u548c \u4e00\u4e2a survivor\uff0c\u56e0\u6b64\u65b0\u751f\u4ee3\u5b9e\u9645\u7684\u53ef\u7528\u5185\u5b58\u7a7a\u95f4\u5927\u5c0f\u4e3a\u6240\u6307\u5b9a\u7684 90%\u3002<\/p>\n<p>\u56e0\u6b64\u53ef\u4ee5\u77e5\u9053\uff0c\u8fd9\u91cc\u65b0\u751f\u4ee3\u7684\u5185\u5b58\u7a7a\u95f4\u6307\u7684\u662f\u65b0\u751f\u4ee3\u53ef\u7528\u7684\u603b\u7684\u5185\u5b58\u7a7a\u95f4\uff0c\u800c\u4e0d\u662f\u6307\u6574\u4e2a\u65b0\u751f\u4ee3\u7684\u7a7a\u95f4\u5927\u5c0f\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u53ef\u4ee5\u770b\u51fa\u8001\u5e74\u4ee3\u7684\u5185\u5b58\u7a7a\u95f4\u4e3a 40960K ( \u7ea6 40M )\uff0c\u5806\u5927\u5c0f = \u65b0\u751f\u4ee3 + \u8001\u5e74\u4ee3\u3002\u56e0\u6b64\u5728\u8fd9\u91cc\uff0c\u8001\u5e74\u4ee3 = \u5806\u5927\u5c0f \u2013 \u65b0\u751f\u4ee3 = 60 \u2013 20 = 40M\u3002<\/p>\n<p>\u6700\u540e\uff0c\u8fd9\u91cc\u8fd8\u6307\u5b9a\u4e86 PermSize = 30m\uff0cPermGen \u5373\u6c38\u4e45\u4ee3 ( \u65b9\u6cd5\u533a )\uff0c\u5b83\u8fd8\u6709\u4e00\u4e2a\u540d\u5b57\uff0c\u53eb\u975e\u5806\uff0c\u4e3b\u8981\u7528\u6765\u5b58\u50a8\u7531 jvm \u52a0\u8f7d\u7684\u7c7b\u6587\u4ef6\u4fe1\u606f\u3001\u5e38\u91cf\u3001\u9759\u6001\u53d8\u91cf\u7b49\u3002<\/p>\n<p><strong>\u9644\uff1aJVM\u5e38\u7528\u53c2\u6570<\/strong><\/p>\n<p>-XX:+&lt;option&gt; \u542f\u7528\u9009\u9879<\/p>\n<p>-XX:-&lt;option&gt;\u4e0d\u542f\u7528\u9009\u9879<\/p>\n<p>-XX:&lt;option&gt;=&lt;number&gt;<\/p>\n<p>-XX:&lt;option&gt;=&lt;string&gt;<\/p>\n<p><strong>\u5806\u8bbe\u7f6e<\/strong><\/p>\n<p>-Xms :\u521d\u59cb\u5806\u5927\u5c0f<\/p>\n<p>-Xmx :\u6700\u5927\u5806\u5927\u5c0f<\/p>\n<p>-Xmn\uff1a\u65b0\u751f\u4ee3\u5927\u5c0f\u3002\u901a\u5e38\u4e3a Xmx \u7684 1\/3 \u6216 1\/4\u3002\u65b0\u751f\u4ee3 = Eden + 2 \u4e2a Survivor \u7a7a\u95f4\u3002\u5b9e\u9645\u53ef\u7528\u7a7a\u95f4\u4e3a = Eden + 1 \u4e2a Survivor\uff0c\u5373 90%<\/p>\n<p>-XX:NewSize=n :\u8bbe\u7f6e\u5e74\u8f7b\u4ee3\u5927\u5c0f<\/p>\n<p>-XX:NewRatio=n: \u8bbe\u7f6e\u5e74\u8f7b\u4ee3\u548c\u5e74\u8001\u4ee3\u7684\u6bd4\u503c\u3002\u5982:\u4e3a3\uff0c\u8868\u793a\u5e74\u8f7b\u4ee3\u4e0e\u5e74\u8001\u4ee3\u6bd4\u503c\u4e3a1\uff1a3\uff0c\u5e74\u8f7b\u4ee3\u5360\u6574\u4e2a\u5e74\u8f7b\u4ee3\u5e74\u8001\u4ee3\u548c\u76841\/4<\/p>\n<p>-XX:SurvivorRatio=n :\u5e74\u8f7b\u4ee3\u4e2dEden\u533a\u4e0e\u4e24\u4e2aSurvivor\u533a\u7684\u6bd4\u503c\u3002\u6ce8\u610fSurvivor\u533a\u6709\u4e24\u4e2a\u3002\u5982\uff1a3\uff0c\u8868\u793aEden\uff1aSurvivor=3\uff1a2\uff0c\u4e00\u4e2aSurvivor\u533a\u5360\u6574\u4e2a\u5e74\u8f7b\u4ee3\u76841\/5<\/p>\n<p>-XX:PermSize=n \u6c38\u4e45\u4ee3(\u65b9\u6cd5\u533a)\u7684\u521d\u59cb\u5927\u5c0f<\/p>\n<p>-XX:MaxPermSize=n :\u8bbe\u7f6e\u6c38\u4e45\u4ee3\u5927\u5c0f<\/p>\n<p>-Xss \u8bbe\u5b9a\u6808\u5bb9\u91cf\uff1b\u5bf9\u4e8eHotSpot\u6765\u8bf4\uff0c\u867d\u7136-Xoss\u53c2\u6570\uff08\u8bbe\u7f6e\u672c\u5730\u65b9\u6cd5\u6808\u5927\u5c0f\uff09\u5b58\u5728\uff0c\u4f46\u5b9e\u9645\u4e0a\u662f\u65e0\u6548\u7684\uff0c\u56e0\u4e3a\u5728HotSpot\u4e2d\u5e76\u4e0d\u533a\u5206\u865a\u62df\u673a\u548c\u672c\u5730\u65b9\u6cd5\u6808\u3002<\/p>\n<p>-XX:PretenureSizeThreshold \uff08\u8be5\u8bbe\u7f6e\u53ea\u5bf9Serial\u548cParNew\u6536\u96c6\u5668\u751f\u6548\uff09 \u53ef\u4ee5\u8bbe\u7f6e\u8fdb\u5165\u8001\u751f\u4ee3\u7684\u5927\u5c0f\u9650\u5236<\/p>\n<p>-XX:MaxTenuringThreshold=1\uff08\u9ed8\u8ba415\uff09\u5783\u573e\u6700\u5927\u5e74\u9f84 \u5982\u679c\u8bbe\u7f6e\u4e3a0\u7684\u8bdd,\u5219\u5e74\u8f7b\u4ee3\u5bf9\u8c61\u4e0d\u7ecf\u8fc7Survivor\u533a,\u76f4\u63a5\u8fdb\u5165\u5e74\u8001\u4ee3. \u5bf9\u4e8e\u5e74\u8001\u4ee3\u6bd4\u8f83\u591a\u7684\u5e94\u7528,\u53ef\u4ee5\u63d0\u9ad8\u6548\u7387.\u5982\u679c\u5c06\u6b64\u503c\u8bbe\u7f6e\u4e3a\u4e00\u4e2a\u8f83\u5927\u503c,\u5219\u5e74\u8f7b\u4ee3\u5bf9\u8c61\u4f1a\u5728Survivor\u533a\u8fdb\u884c\u591a\u6b21\u590d\u5236,\u8fd9\u6837\u53ef\u4ee5\u589e\u52a0\u5bf9\u8c61\u518d\u5e74\u8f7b\u4ee3\u7684\u5b58\u6d3b \u65f6\u95f4,\u589e\u52a0\u5728\u5e74\u8f7b\u4ee3\u5373\u88ab\u56de\u6536\u7684\u6982\u7387<\/p>\n<p>\u8be5\u53c2\u6570\u53ea\u6709\u5728\u4e32\u884cGC\u65f6\u624d\u6709\u6548.<\/p>\n<p><strong>\u6536\u96c6\u5668\u8bbe\u7f6e<\/strong><\/p>\n<p>-XX:+UseSerialGC :\u8bbe\u7f6e\u4e32\u884c\u6536\u96c6\u5668<\/p>\n<p>-XX:+UseParallelGC :\u8bbe\u7f6e\u5e76\u884c\u6536\u96c6\u5668<\/p>\n<p>-XX:+UseParallelOldGC :\u8bbe\u7f6e\u5e76\u884c\u5e74\u8001\u4ee3\u6536\u96c6\u5668<\/p>\n<p>-XX:+UseConcMarkSweepGC :\u8bbe\u7f6e\u5e76\u53d1\u6536\u96c6\u5668<\/p>\n<p>\u5783\u573e\u56de\u6536\u7edf\u8ba1\u4fe1\u606f<\/p>\n<p>-XX:+PrintHeapAtGC GC\u7684heap\u8be6\u60c5<\/p>\n<p>-XX:+PrintGCDetails GC\u8be6\u60c5<\/p>\n<p>-XX:+PrintGCTimeStamps \u6253\u5370GC\u65f6\u95f4\u4fe1\u606f<\/p>\n<p>-XX:+PrintTenuringDistribution \u6253\u5370\u5e74\u9f84\u4fe1\u606f\u7b49<\/p>\n<p>-XX:+HandlePromotionFailure \u8001\u5e74\u4ee3\u5206\u914d\u62c5\u4fdd\uff08true or false\uff09<\/p>\n<p>-Xloggc:gc.log \u6307\u5b9a\u65e5\u5fd7\u7684\u4f4d\u7f6e<\/p>\n<p>\u5e76\u884c\u6536\u96c6\u5668\u8bbe\u7f6e<\/p>\n<p>-XX:ParallelGCThreads=n :\u8bbe\u7f6e\u5e76\u884c\u6536\u96c6\u5668\u6536\u96c6\u65f6\u4f7f\u7528\u7684CPU\u6570\u3002\u5e76\u884c\u6536\u96c6\u7ebf\u7a0b\u6570\u3002<\/p>\n<p>-XX:MaxGCPauseMillis=n :\u8bbe\u7f6e\u5e76\u884c\u6536\u96c6\u6700\u5927\u6682\u505c\u65f6\u95f4<\/p>\n<p>-XX:GCTimeRatio=n :\u8bbe\u7f6e\u5783\u573e\u56de\u6536\u65f6\u95f4\u5360\u7a0b\u5e8f\u8fd0\u884c\u65f6\u95f4\u7684\u767e\u5206\u6bd4\u3002\u516c\u5f0f\u4e3a1\/(1+n)<\/p>\n<p><strong>\u5e76\u53d1\u6536\u96c6\u5668\u8bbe\u7f6e<\/strong><\/p>\n<p>-XX:+CMSIncrementalMode :\u8bbe\u7f6e\u4e3a\u589e\u91cf\u6a21\u5f0f\u3002\u9002\u7528\u4e8e\u5355CPU\u60c5\u51b5\u3002<\/p>\n<p>-XX:ParallelGCThreads=n :\u8bbe\u7f6e\u5e76\u53d1\u6536\u96c6\u5668\u5e74\u8f7b\u4ee3\u6536\u96c6\u65b9\u5f0f\u4e3a\u5e76\u884c\u6536\u96c6\u65f6\uff0c\u4f7f\u7528\u7684CPU\u6570\u3002\u5e76\u884c\u6536\u96c6\u7ebf\u7a0b\u6570\u3002<\/p>\n<p><strong>\u5176\u4ed6<\/strong><\/p>\n<p>-XX:PermSize=10M\u548c-XX:MaxPermSize=10M\u9650\u5236\u65b9\u6cd5\u533a\u5927\u5c0f\u3002<\/p>\n<p>-XX:MaxDirectMemorySize=10M\u6307\u5b9aDirectMemory\uff08\u76f4\u63a5\u5185\u5b58\uff09\u5bb9\u91cf\uff0c\u5982\u679c\u4e0d\u6307\u5b9a\uff0c\u5219\u9ed8\u8ba4\u4e0eJAVA\u5806\u6700\u5927\u503c\uff08-Xmx\u6307\u5b9a\uff09\u4e00\u6837\u3002<\/p>\n<p>-XX:+HeapDumpOnOutOfMemoryError \u53ef\u4ee5\u8ba9\u865a\u62df\u673a\u5728\u51fa\u73b0\u5185\u5b58\u6ea2\u51fa\u5f02\u5e38\u65f6Dump\u51fa\u5f53\u524d\u7684\u5185\u5b58\u5806\u8f6c\u50a8\u5feb\u7167\uff08.hprof\u6587\u4ef6\uff09\u4ee5\u4fbf\u65f6\u5019\u8fdb\u884c\u5206\u6790\uff08\u6bd4\u5982Eclipse Memory Analysis\uff09\u3002<\/p>\n<p>\u53c2\u8003\u8d44\u6599\uff1a<\/p>\n<p>1. \u300ajava \u865a\u62df\u673a\u2013\u65b0\u751f\u4ee3\u4e0e\u8001\u5e74\u4ee3GC\u300b<\/p>\n<p>2. \u300aJava \u5806\u5185\u5b58\u300b<\/p>\n<p>3. \u300a\u6df1\u5165\u7406\u89e3Java\u865a\u62df\u673a\u300b\u5468\u5fd7\u660e\u8457<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6765\u6e90\uff1a\u00a0\u6731\u5c0f\u53ae \u94fe\u63a5\uff1a\u00a0http:\/\/blog.csdn.net\/u013256816\/article\/det &hellip; <a href=\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cJava\u5806\u5185\u5b58\u201d<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[3,50],"tags":[78,8],"translation":{"provider":"WPGlobus","version":"2.12.2","language":"zh","enabled_languages":["en","zh"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"zh":{"title":false,"content":false,"excerpt":false}}},"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java\u5806\u5185\u5b58 - \u8f6f\u4ef6\u542f\u793a\u5f55<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blog.softwareclues.com\/zh\/java\u5806\u5185\u5b58\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java\u5806\u5185\u5b58 - \u8f6f\u4ef6\u542f\u793a\u5f55\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blog.softwareclues.com\/zh\/java\u5806\u5185\u5b58\" \/>\n<meta property=\"og:site_name\" content=\"\u8f6f\u4ef6\u542f\u793a\u5f55\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-15T04:06:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1\" \/>\n<meta name=\"author\" content=\"Editorial Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Editorial Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98\",\"url\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98\",\"name\":\"Java\u5806\u5185\u5b58 - \u8f6f\u4ef6\u542f\u793a\u5f55\",\"isPartOf\":{\"@id\":\"http:\/\/blog.softwareclues.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#primaryimage\"},\"image\":{\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#primaryimage\"},\"thumbnailUrl\":\"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1\",\"datePublished\":\"2016-05-15T04:06:00+00:00\",\"dateModified\":\"2016-05-15T04:06:00+00:00\",\"author\":{\"@id\":\"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82\"},\"breadcrumb\":{\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#primaryimage\",\"url\":\"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1\",\"contentUrl\":\"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/blog.softwareclues.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\u5806\u5185\u5b58\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/blog.softwareclues.com\/#website\",\"url\":\"http:\/\/blog.softwareclues.com\/\",\"name\":\"\u8f6f\u4ef6\u542f\u793a\u5f55\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/blog.softwareclues.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82\",\"name\":\"Editorial Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.softwareclues.com\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g\",\"contentUrl\":\"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g\",\"caption\":\"Editorial Team\"},\"url\":\"http:\/\/blog.softwareclues.com\/zh\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java\u5806\u5185\u5b58 - \u8f6f\u4ef6\u542f\u793a\u5f55","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":"http:\/\/blog.softwareclues.com\/zh\/java\u5806\u5185\u5b58","og_locale":"zh_CN","og_type":"article","og_title":"Java\u5806\u5185\u5b58 - \u8f6f\u4ef6\u542f\u793a\u5f55","og_url":"http:\/\/blog.softwareclues.com\/zh\/java\u5806\u5185\u5b58","og_site_name":"\u8f6f\u4ef6\u542f\u793a\u5f55","article_published_time":"2016-05-15T04:06:00+00:00","og_image":[{"url":"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1"}],"author":"Editorial Team","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"Editorial Team","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98","url":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98","name":"Java\u5806\u5185\u5b58 - \u8f6f\u4ef6\u542f\u793a\u5f55","isPartOf":{"@id":"http:\/\/blog.softwareclues.com\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#primaryimage"},"image":{"@id":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#primaryimage"},"thumbnailUrl":"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1","datePublished":"2016-05-15T04:06:00+00:00","dateModified":"2016-05-15T04:06:00+00:00","author":{"@id":"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82"},"breadcrumb":{"@id":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#primaryimage","url":"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1","contentUrl":"http:\/\/mmbiz.qpic.cn\/mmbiz\/eZzl4LXykQwGIFvDc6K2micNrQyVVRIlKB7RJE47SUavLxdkyxfOsG9ibnSD9hLbmTs53VrfF6dOk3CtElHKh5Mw\/640?wx_fmt=jpeg&amp;wxfrom=5&amp;wx_lazy=1"},{"@type":"BreadcrumbList","@id":"http:\/\/blog.softwareclues.com\/zh\/java%e5%a0%86%e5%86%85%e5%ad%98#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/blog.softwareclues.com\/"},{"@type":"ListItem","position":2,"name":"Java\u5806\u5185\u5b58"}]},{"@type":"WebSite","@id":"http:\/\/blog.softwareclues.com\/#website","url":"http:\/\/blog.softwareclues.com\/","name":"\u8f6f\u4ef6\u542f\u793a\u5f55","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/blog.softwareclues.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"http:\/\/blog.softwareclues.com\/#\/schema\/person\/4c47e4e97a658930b6c0e90f4a4eda82","name":"Editorial Team","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.softwareclues.com\/#\/schema\/person\/image\/","url":"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g","contentUrl":"http:\/\/2.gravatar.com\/avatar\/e4fb391d9f5bb29583ed9579324a5e17?s=96&d=mystery&r=g","caption":"Editorial Team"},"url":"http:\/\/blog.softwareclues.com\/zh\/author\/admin"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paLJfj-5x","jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts\/343"}],"collection":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/comments?post=343"}],"version-history":[{"count":2,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts\/343\/revisions"}],"predecessor-version":[{"id":345,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/posts\/343\/revisions\/345"}],"wp:attachment":[{"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/media?parent=343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/categories?post=343"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.softwareclues.com\/zh\/wp-json\/wp\/v2\/tags?post=343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}