{"id":10008107,"date":"2023-08-17T11:59:57","date_gmt":"2023-08-17T03:59:57","guid":{"rendered":"https:\/\/blog.itmax.cn\/?p=10008107"},"modified":"2023-08-17T11:59:57","modified_gmt":"2023-08-17T03:59:57","slug":"java%e5%ba%94%e7%94%a8%e5%a0%86%e5%a4%96%e5%86%85%e5%ad%98%e6%b3%84%e9%9c%b2%e9%97%ae%e9%a2%98%e6%8e%92%e6%9f%a5-%e4%ba%ac%e4%b8%9c%e4%ba%91%e6%8a%80%e6%9c%af%e5%9b%a2%e9%98%9f","status":"publish","type":"post","link":"https:\/\/itmax.cn\/?p=10008107","title":{"rendered":"Java\u5e94\u7528\u5806\u5916\u5185\u5b58\u6cc4\u9732\u95ee\u9898\u6392\u67e5 | \u4eac\u4e1c\u4e91\u6280\u672f\u56e2\u961f"},"content":{"rendered":"<h2>\u95ee\u9898\u662f\u600e\u4e48\u53d1\u73b0\u7684<\/h2>\n<p>\u6700\u8fd1\u6709\u4e2ajava\u5e94\u7528\u5728\u505a\u538b\u529b\u6d4b\u8bd5  <br \/>\u538b\u6d4b\u73af\u5883\u914d\u7f6e\uff1a  <br \/>CentOS\u7cfb\u7edf 4\u6838CPU 8g\u5185\u5b58 jdk1.6.0_25\uff0cjvm\u914d\u7f6e-server -Xms2048m -Xmx2048m  <br \/>\u51fa\u73b0\u95ee\u9898\u5982\u4e0b  <br \/>\u6267\u884c300\u5e76\u53d1\uff0c\u538b\u6d4b\u6301\u7eed1\u4e2a\u5c0f\u65f6\u540e\u5185\u5b58\u4f7f\u7528\u7387\u4ece20%\u4e0a\u5347\u5230100%,tps\u4ece1100\u591a\u964d\u4f4e\u5230600\u591a\u3002<\/p>\n<h2>\u6392\u67e5\u95ee\u9898\u7684\u8be6\u7ec6\u8fc7\u7a0b<\/h2>\n<p>\u9996\u5148\u4f7f\u7528top\u547d\u4ee4\u67e5\u770b\u5185\u5b58\u5360\u7528\u5982\u4e0b  <br \/><img decoding=\"async\"   referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000044122379\" alt=\"image.png\" title=\"image.png\"><\/p>\n<p>\u7136\u540e\u67e5\u770bjava\u5806\u5185\u5b58\u5206\u5e03\u60c5\u51b5\uff0c\u67e5\u770b\u5806\u5185\u5b58\u5360\u7528\u6b63\u5e38\uff0cjvm\u5783\u573e\u56de\u6536\u4e5f\u6ca1\u6709\u5f02\u5e38\u3002  <br \/><img decoding=\"async\"   referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/remote\/1460000044122380\" alt=\"image.png\" title=\"image.png\" loading=\"lazy\"><\/p>\n<p>\u7136\u540e\u60f3\u5230\u4e86\u662f\u5806\u5916\u5185\u5b58\u6cc4\u6f0f\uff0c\u7531\u4e8e\u7cfb\u7edf\u4e2d\u7528\u7684jsf\u63a5\u53e3\u6bd4\u8f83\u591a\uff0c\u5e95\u5c42\u90fd\u662f\u4f9d\u8d56\u7684netty\u3002<\/p>\n<ul>\n<li>\u9996\u5148\u8003\u8651\u7684\u662fjava\u4e2dnio\u5305\u4e0b\u7684DirectByteBuffer,\u53ef\u4ee5\u76f4\u63a5\u5206\u914d\u5806\u5916\u5185\u5b58\uff0c\u4e0d\u8fc7\u8be5\u7c7b\u5206\u914d\u7684\u5185\u5b58\u4e5f\u6709\u5927\u5c0f\u9650\u5236\u7684\uff0c\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7-XX:MaxDirectMemorySize=1g \u8fdb\u884c\u6307\u5b9a\uff0c\u5e76\u4e14\u5185\u5b58\u4e0d\u591f\u7528\u7684\u65f6\u5019\u4ee3\u7801\u4e2d\u4f1a\u663e\u5f0f\u7684\u8c03\u7528System.gc()\u65b9\u6cd5\u6765\u89e6\u53d1FullGC,\u5982\u679c\u5185\u5b58\u8fd8\u662f\u4e0d\u591f\u7528\u5c31\u4f1a\u629b\u51fa\u5185\u5b58\u6ea2\u51fa\u7684\u5f02\u5e38\u3002<\/li>\n<li>\u4e3a\u4e86\u9a8c\u8bc1\u8fd9\u4e00\u60f3\u6cd5\uff0c\u4e8e\u662f\u5728\u542f\u52a8\u53c2\u6570\u4e2d\u901a\u8fc7-XX:MaxDirectMemorySize=1g\u6307\u5b9a\u4e86\u5806\u5916\u5185\u5b58\u5927\u5c0f\u4e3a1g\uff0c\u7136\u540e\u518d\u6b21\u8fdb\u884c\u538b\u6d4b\uff0c\u53d1\u73b0\u5185\u5b58\u8fd8\u662f\u5728\u6301\u7eed\u589e\u957f\uff0c\u7136\u540e\u8d85\u8fc7\u4e86\u5806\u5185\u5b582g\u548c\u5806\u5916\u5185\u5b581g\u7684\u603b\u548c\uff0c\u5e76\u4e14\u4e5f\u6ca1\u6709\u53d1\u73b0\u6709\u5185\u5b58\u6ea2\u51fa\u7684\u5f02\u5e38\uff0c\u4e5f\u6ca1\u6709\u9891\u7e41\u7684\u8fdb\u884cFullGC\u3002\u6240\u4ee5\u53ef\u80fd\u4e0d\u662fnio\u7684DirectByteBuffer\u5360\u7528\u7684\u5806\u5916\u5185\u5b58\u3002<\/li>\n<\/ul>\n<p>\u4e3a\u4e86\u5206\u6790\u5806\u5916\u5185\u5b58\u5230\u5e95\u662f\u8c01\u5360\u7528\u4e86\uff0c\u4e0d\u5f97\u4e0d\u5b89\u88c5google-perftools\u5de5\u5177\u8fdb\u884c\u5206\u6790\u3002\u5b83\u7684\u539f\u7406\u662f\u5728java\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\u65f6\uff0c<a target=\"_blank\" href=\"https:\/\/link.segmentfault.com\/?enc=wMO5sHAYPkO4l0sXxo91sQ%3D%3D.jl1xXhpH%2B0OSySSYf1bVHskzcqjBAdvYfvum3UpdTlohKt9ReSknwU3kgncyHf%2BkLI6DuFbY92RRyEKzOXbfnQ%3D%3D\" rel=\"noopener noreferrer\">\u5f53\u8c03\u7528malloc\u65f6\u6362\u7528\u5b83\u7684libtcmalloc.so<\/a>\uff0c\u8fd9\u6837\u5c31\u80fd\u505a\u4e00\u4e9b\u7edf\u8ba1\u4e86\u3002  <br \/>\u5b89\u88c5\u6b65\u9aa4\u5982\u4e0b:<\/p>\n<ul>\n<li>\u4e0b\u8f7d<a target=\"_blank\" href=\"https:\/\/link.segmentfault.com\/?enc=nfRvTWg9%2F2XefV0SXHGBfA%3D%3D.PcR3ZiClUUUovjCejSaMGYjKeNvOcqSz4XXGDUWP1qCv5Xm6YpPb6iGPJX1la0nzsgvR88cRRg0ppePGj1dUMg67fpTpgp0d72lRsv%2F5W9g%3D\" rel=\"noopener noreferrer\">http:\/\/download.savannah.gnu.org\/releases\/libunwind\/libunwind&#8230;<\/a>\uff0c<\/li>\n<li>.\/configure<\/li>\n<li>make<\/li>\n<li>sudo make install \/\/\u9700\u8981root\u6743\u9650<\/li>\n<li>\u4e0b\u8f7d<a target=\"_blank\" href=\"https:\/\/link.segmentfault.com\/?enc=wiPI%2FaF3gOCK4SSYAzoySg%3D%3D.IlFcXJ2%2BpL%2FY1tWmlkxZay03mnIVnTGk3XVWd5jYrpHa%2B2%2Fn%2FEm%2FmZ4JycMgW7xPyTsVQFmU6gxN0bq2%2BSpMnWBi%2Fo3Sw%2BfwbpaaEPzTJ8A%3D\" rel=\"noopener noreferrer\">http:\/\/google-perftools.googlecode.com\/files\/google-perftools&#8230;<\/a>,<\/li>\n<li>.\/configure &#8211;prefix=\/home\/admin\/tools\/perftools &#8211;enable-frame-pointers<\/li>\n<li>make<\/li>\n<li>sudo make install \/\/\u9700\u8981root\u6743\u9650<\/li>\n<li>\u4fee\u6539lc\/_config: sudo vi \/etc\/ld.so.conf.d\/usr-local\/_lib.conf\uff0c\u52a0\u5165\/usr\/local\/lib(libunwind\u7684lib\u6240\u5728\u76ee\u5f55)<\/li>\n<li>\u6267\u884csudo \/sbin\/ldconfig\uff0c\u4f7flibunwind\u751f\u6548<\/li>\n<li>\u5728\u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u524d\u52a0\u5165\uff1a<\/li>\n<li>export LD_PRELOAD=\/home\/admin\/tools\/perftools\/lib\/libtcmalloc.so<\/li>\n<li>export HEAPPROFILE=\/home\/admin\/heap\/gzip<\/li>\n<li>\u542f\u52a8\u5e94\u7528\u7a0b\u5e8f\uff0c\u6b64\u65f6\u4f1a\u5728\/home\/admin\/heap\u4e0b\u770b\u5230\u8bf8\u5982gzip_pid.xxxx.heap\u7684heap\u6587\u4ef6<\/li>\n<li>\u4f7f\u7528\/home\/admin\/tools\/perftools\/bin\/pprof &#8211;text $JAVA\/_HOME\/bin\/java test\/_pid.xxxx.heap\u6765\u67e5\u770b<\/li>\n<li>\/home\/admin\/tools\/perftools\/bin\/pprof &#8211;text $JAVA\/_HOME\/bin\/java gzip\/_22366.0005.heap &gt; gzip-0005.txt<\/li>\n<li>\u7136\u540e\u67e5\u770b\u5206\u6790\u7ed3\u679c\u5982\u4e0b<\/li>\n<\/ul>\n<pre><code>Total: 4504.5 MB\n4413.9 98.0% 98.0% 4413.9 98.0% zcalloc\n60.0 1.3% 99.3% 60.0 1.3% os::malloc\n16.4 0.4% 99.7% 16.4 0.4% ObjectSynchronizer::omAlloc\n8.7 0.2% 99.9% 4422.7 98.2% Java_java_util_zip_Inflater_init\n4.7 0.1% 100.0% 4.7 0.1% init\n0.3 0.0% 100.0% 0.3 0.0% readCEN\n0.2 0.0% 100.0% 0.2 0.0% instanceKlass::add_dependent_nmethod\n0.1 0.0% 100.0% 0.1 0.0% _dl_allocate_tls\n0.0 0.0% 100.0% 0.0 0.0% pthread_cond_wait@GLIBC_2.2.5\n0.0 0.0% 100.0% 1.7 0.0% Thread::Thread\n0.0 0.0% 100.0% 0.0 0.0% _dl_new_object\n0.0 0.0% 100.0% 0.0 0.0% pthread_cond_timedwait@GLIBC_2.2.5\n0.0 0.0% 100.0% 0.0 0.0% _dlerror_run\n0.0 0.0% 100.0% 0.0 0.0% allocZip\n0.0 0.0% 100.0% 0.0 0.0% __strdup\n0.0 0.0% 100.0% 0.0 0.0% _nl_intern_locale_data\n0.0 0.0% 100.0% 0.0 0.0% addMetaName\n\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u770b\u5230\u662fJava\/_java\/_util\/_zip\/_Inflater_init\u8fd9\u4e2a\u51fd\u6570\u4e00\u76f4\u5728\u8fdb\u884c\u5185\u5b58\u5206\u914d\uff0c\u67e5\u770bjava\u6e90\u7801\u539f\u6765\u662f<\/p>\n<pre><code>public GZIPInputStream(InputStream in, int size) throws IOException {\n    super(in, new Inflater(true), size);\n usesDefaultInflater = true;\n readHeader(in);\n}\n\n<\/code><\/pre>\n<pre><code>\u539f\u6765\u662fjava\u4e2dgzip\u89e3\u538b\u7f29\u7c7b\u8017\u5c3d\u4e86\u7cfb\u7edf\u5185\u5b58\uff0c\u7136\u540e\u8ddf\u8e2a\u6e90\u7801\u5230\u4e86\u7cfb\u7edf\u91cc\u8fb9\u4f7f\u7528\u7684jimdb\u5ba2\u6237\u7aefSerializationUtils\u7c7b\uff0cjimdb\u5ba2\u6237\u7aef\u4f7f\u7528\u8be5\u5de5\u5177\u7c7b\u5bf9\u4fdd\u5b58\u5728jimdb\u4e2d\u7684key\u548c\u5bf9\u8c61\u8fdb\u884c\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u64cd\u4f5c\uff0c\u5e76\u4e14\u5728\u5bf9Object\u7c7b\u578b\u7684\u8fdb\u884c\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u7684\u65f6\u5019\u7528\u5230\u4e86gzip\u89e3\u538b\u7f29,\u4e5f\u5c31\u662f\u5728\u8c03\u7528jimdb\u5ba2\u6237\u7aef\u7684getObject\u548csetObject\u65b9\u6cd5\u65f6\uff0c\u5185\u90e8\u4f1a\u4f7f\u7528java\u7684GZIPInputStream\u548cGZIPOutputStream\u89e3\u538b\u7f29\u529f\u80fd\uff0c\u5f53\u5927\u5e76\u53d1\u8fdb\u884c\u538b\u6d4b\u7684\u65f6\u5019\uff0c\u5c31\u4f1a\u9020\u6210\u5185\u5b58\u6cc4\u6f0f\uff0c\u51fa\u73b0\u5185\u5b58\u6301\u7eed\u589e\u957f\u7684\u95ee\u9898\uff0c\u5f53\u538b\u6d4b\u505c\u6b62\u540e\uff0c\u5185\u5b58\u4e5f\u4e0d\u4f1a\u91ca\u653e\u3002\n\n<\/code><\/pre>\n<h2>\u5982\u4f55\u89e3\u51b3\u95ee\u9898<\/h2>\n<p>1\u3001\u5347\u7ea7jdk\u7248\u672c\u4e3ajdk7u71 \uff0c\u538b\u6d4b\u4e00\u6bb5\u65f6\u95f4\u540e\uff0c\u53d1\u73b0\u5185\u5b58\u589e\u957f\u6709\u6240\u51cf\u6162\uff0c\u5e76\u4e14\u4f1a\u7a33\u5b9a\u5728\u4e00\u5b9a\u7684\u8303\u56f4\u5185\uff0c\u4e0d\u4f1a\u628a\u670d\u52a1\u5668\u7684\u6240\u6709\u5185\u5b58\u8017\u5c3d\u3002\u731c\u6d4b\u53ef\u80fd\u662fjdk1.6\u7248\u672c\u7684bug  <br \/>2\u3001\u5c3d\u91cf\u4e0d\u8981\u4f7f\u7528jimdb\u5ba2\u6237\u7aef\u7684getObject\u548csetObject\u65b9\u6cd5\uff0c\u5982\u679c\u771f\u7684\u9700\u8981\u4fdd\u5b58\u5bf9\u8c61\uff0c\u53ef\u4ee5\u81ea\u5df1\u5b9e\u73b0\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\uff0c\u4e0d\u8981\u89e3\u538b\u7f29\u529f\u80fd\uff0c\u56e0\u4e3a\u5bf9\u8c61\u672c\u6765\u5c31\u4e0d\u5927\uff0c\u538b\u7f29\u4e0d\u4e86\u591a\u5c11\u7a7a\u95f4\u3002\u5982\u771f\u7684\u9700\u8981\u89e3\u538b\u7f29\u529f\u80fd\uff0c\u6700\u597d\u8bbe\u7f6e\u89e3\u538b\u7f29\u9600\u503c\uff0c\u5f53\u5bf9\u8c61\u5927\u5c0f\u8d85\u8fc7\u9600\u503c\u4e4b\u540e\u5728\u8fdb\u884c\u89e3\u538b\u7f29\u5904\u7406\uff0c\u4e0d\u8981\u5c06\u6240\u6709\u5bf9\u8c61\u90fd\u8fdb\u884c\u89e3\u538b\u7f29\u5904\u7406\u3002<\/p>\n<blockquote>\n<p>\u4f5c\u8005\uff1a\u4eac\u4e1c\u96f6\u552e \u66f9\u5fd7\u98de<\/p>\n<p>\u6765\u6e90\uff1a\u4eac\u4e1c\u4e91\u5f00\u53d1\u8005\u793e\u533a<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/segmentfault.com\/a\/1190000044122377\">https:\/\/segmentfault.com\/a\/1190000044122377<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u95ee\u9898\u662f\u600e\u4e48\u53d1\u73b0\u7684 \u6700\u8fd1\u6709\u4e2ajava\u5e94\u7528\u5728\u505a\u538b\u529b\u6d4b\u8bd5 \u538b\u6d4b\u73af\u5883\u914d\u7f6e\uff1a CentOS\u7cfb\u7edf 4\u6838CPU 8g\u5185\u5b58 j [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-10008107","post","type-post","status-publish","format-standard","hentry","category-share"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10008107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10008107"}],"version-history":[{"count":0,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10008107\/revisions"}],"wp:attachment":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10008107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10008107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10008107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}