﻿{"id":331,"date":"2017-06-23T21:57:44","date_gmt":"2017-06-23T13:57:44","guid":{"rendered":"http:\/\/www.chenweikang.top\/?p=331"},"modified":"2017-09-19T11:37:02","modified_gmt":"2017-09-19T03:37:02","slug":"331","status":"publish","type":"post","link":"https:\/\/www.chenweikang.top\/?p=331","title":{"rendered":"java \u865a\u62df\u673a--\u65b0\u751f\u4ee3\u4e0e\u8001\u5e74\u4ee3GC"},"content":{"rendered":"<div id=\"blogBody\" class=\"blog-body\">\n<div class=\"BlogContent\">\n<div>\n<h2><strong>1\uff0e Java\u5806\u4e2d\u5404\u4ee3\u5206\u5e03\uff1a<\/strong><\/h2>\n<p><strong><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/img\/201410\/16150211_aRgY.jpg\" alt=\"\" width=\"577\" height=\"380\" \/><\/strong><\/p>\n<p>\u56fe1\uff1aJava\u5806\u4e2d\u5404\u4ee3\u5206\u5e03<\/p>\n<p>Young\uff1a\u4e3b\u8981\u662f\u7528\u6765\u5b58\u653e\u65b0\u751f\u7684\u5bf9\u8c61\u3002<\/p>\n<p>Old\uff1a\u4e3b\u8981\u5b58\u653e\u5e94\u7528\u7a0b\u5e8f\u4e2d\u751f\u547d\u5468\u671f\u957f\u7684\u5185\u5b58\u5bf9\u8c61\u3002<\/p>\n<p>Permanent\uff1a\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\u7684APP\u4f1aLOAD\u5f88\u591aCLASS\u7684\u8bdd,\u5c31\u5f88\u53ef\u80fd\u51fa\u73b0PermGen space\u9519\u8bef\u3002<\/p>\n<h2><strong>2\uff0e JVM \u4f7f\u7528\u7684GC\u7b97\u6cd5\u662f\u4ec0\u4e48\uff1f<\/strong><\/h2>\n<p>\u5206\u4ee3\u6536\u96c6\u3002<\/p>\n<p>\u5373\u5c06\u5185\u5b58\u5206\u4e3a\u51e0\u4e2a\u533a\u57df\uff0c\u5c06\u4e0d\u540c\u751f\u547d\u5468\u671f\u7684\u5bf9\u8c61\u653e\u5728\u4e0d\u540c\u533a\u57df\u91cc\uff1b<\/p>\n<p>\u5728GC\u6536\u96c6\u7684\u65f6\u5019\uff0c\u9891\u7e41\u6536\u96c6\u751f\u547d\u5468\u671f\u77ed\u7684\u533a\u57df(Young area)\uff1b<\/p>\n<p>\u6bd4\u8f83\u5c11\u7684\u6536\u96c6\u751f\u547d\u5468\u671f\u6bd4\u8f83\u957f\u7684\u533a\u57df(Old area)\uff1b<\/p>\n<p>\u57fa\u672c\u4e0d\u6536\u96c6\u7684\u6c38\u4e45\u533a(Perm area)\u3002<\/p>\n<h2><strong>3\uff0e GC \u548c Full GC \u6709\u4ec0\u4e48\u533a\u522b\uff1f<\/strong><\/h2>\n<p>GC\uff08\u6216Minor GC\uff09\uff1a\u6536\u96c6 \u751f\u547d\u5468\u671f\u77ed\u7684\u533a\u57df(Young area)\u3002<\/p>\n<p>Full GC \uff08\u6216Major GC\uff09\uff1a\u6536\u96c6\u751f\u547d\u5468\u671f\u77ed\u7684\u533a\u57df(Young area)\u548c\u751f\u547d\u5468\u671f\u6bd4\u8f83\u957f\u7684\u533a\u57df(Old area)\u5bf9\u6574\u4e2a\u5806\u8fdb\u884c\u5783\u573e\u6536\u96c6\u3002<\/p>\n<p>\u4ed6\u4eec\u7684\u6536\u96c6\u7b97\u6cd5\u4e0d\u540c\uff0c\u6240\u4ee5\u4f7f\u7528\u7684\u65f6\u95f4\u4e5f\u4e0d\u540c\u3002 GC \u6548\u7387\u4e5f\u4f1a\u6bd4\u8f83\u9ad8\uff0c\u6211\u4eec\u8981\u5c3d\u91cf\u51cf\u5c11 Full GC \u7684\u6b21\u6570\u3002 \u5f53\u663e\u793a\u8c03\u7528System.gc() \u65f6\uff0cgc does a full collection(both young generation and tenured generation).<\/p>\n<h2><strong>4\uff0e Minor GC\u540e\uff0cEden\u662f\u7a7a\u7684\u5417\uff1f<\/strong><\/h2>\n<p>\u662f\u7684\uff0cMinor GC\u4f1a\u628aEden\u4e2d\u7684\u6240\u6709\u6d3b\u7684\u5bf9\u8c61\u90fd\u79fb\u5230Survivor\u533a\u57df\u4e2d\uff0c\u5982\u679cSurvivor\u533a\u4e2d\u653e\u4e0d\u4e0b\uff0c\u90a3\u4e48\u5269\u4e0b\u7684\u6d3b\u7684\u5bf9\u8c61\u5c31\u88ab\u79fb\u5230Old generation \u4e2d\u3002<\/p>\n<h2><strong>5\uff0e Garbage collection options(JDK1.4)\uff1a<\/strong><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/img\/201410\/16150211_yDsR.jpg\" alt=\"\" width=\"557\" height=\"276\" \/><\/p>\n<p>\u56fe2\uff1aGC\u53c2\u6570<\/p>\n<div>\u5806\u8bbe\u7f6e<br \/>\n-Xms :\u521d\u59cb\u5806\u5927\u5c0f<br \/>\n-Xmx :\u6700\u5927\u5806\u5927\u5c0f<br \/>\n-XX:NewSize=n :\u8bbe\u7f6e\u5e74\u8f7b\u4ee3\u5927\u5c0f<br \/>\n-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<br \/>\n-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<br \/>\n-XX:MaxPermSize=n :\u8bbe\u7f6e\u6301\u4e45\u4ee3\u5927\u5c0f<br \/>\n\u6536\u96c6\u5668\u8bbe\u7f6e<br \/>\n-XX:+UseSerialGC :\u8bbe\u7f6e\u4e32\u884c\u6536\u96c6\u5668<br \/>\n-XX:+UseParallelGC :\u8bbe\u7f6e\u5e76\u884c\u6536\u96c6\u5668<br \/>\n-XX:+UseParalledlOldGC :\u8bbe\u7f6e\u5e76\u884c\u5e74\u8001\u4ee3\u6536\u96c6\u5668<br \/>\n-XX:+UseConcMarkSweepGC :\u8bbe\u7f6e\u5e76\u53d1\u6536\u96c6\u5668<br \/>\n\u5783\u573e\u56de\u6536\u7edf\u8ba1\u4fe1\u606f<br \/>\n-XX:+PrintHeapAtGC GC\u7684heap\u8be6\u60c5<br \/>\n-XX:+PrintGCDetails\u00a0 GC\u8be6\u60c5<br \/>\n-XX:+PrintGCTimeStamps\u00a0 \u6253\u5370GC\u65f6\u95f4\u4fe1\u606f<br \/>\n-XX:+PrintTenuringDistribution\u00a0\u00a0\u00a0 \u6253\u5370\u5e74\u9f84\u4fe1\u606f\u7b49<\/div>\n<div>-XX:+HandlePromotionFailure\u00a0\u00a0 \u8001\u5e74\u4ee3\u5206\u914d\u62c5\u4fdd\uff08true\u00a0 or false\uff09<\/div>\n<div>\u5e76\u884c\u6536\u96c6\u5668\u8bbe\u7f6e<br \/>\n-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<br \/>\n-XX:MaxGCPauseMillis=n :\u8bbe\u7f6e\u5e76\u884c\u6536\u96c6\u6700\u5927\u6682\u505c\u65f6\u95f4<br \/>\n-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)<br \/>\n\u5e76\u53d1\u6536\u96c6\u5668\u8bbe\u7f6e<br \/>\n-XX:+CMSIncrementalMode :\u8bbe\u7f6e\u4e3a\u589e\u91cf\u6a21\u5f0f\u3002\u9002\u7528\u4e8e\u5355CPU\u60c5\u51b5\u3002<br \/>\n-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<\/div>\n<h2><strong>6\uff0e \u4f8b\u5b50\uff1aHeap size \u8bbe\u7f6e<\/strong><\/h2>\n<p>\u573a\u666f\uff1a\u5728JAVA_HOME\u4e0bdemo\/jfc\/SwingSet2\/\u76ee\u5f55\u4e0b\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\uff1a<\/p>\n<p>java -jar -Xmn4m -Xms16m -Xmx16m SwingSet2.jar<\/p>\n<p>\u7cfb\u7edf\u8f93\u51fa\uff1a<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>Exception in thread \"Image Fetcher 0\" java.lang.OutOfMemoryError: Java heap space<\/p>\n<p>Exception in thread \"Image Fetcher 3\" java.lang.OutOfMemoryError: Java heap space<\/p>\n<p>Exception in thread \"Image Fetcher 1\" java.lang.OutOfMemoryError: Java heap space<\/p>\n<p>Exception in thread \u201cImage Fetcher 2\u201d java.lang.OutOfMemoryError: Java heap space<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u8c03\u4f18\uff1a\u5c06-Xms\u548c-Xmx\u9009\u9879\u8bbe\u7f6e\u4e3a32m\uff0c\u800c-Xmn\u4e3a1\/4\u7684-Xmx\u503c\u3002<\/p>\n<p>\u7ed3\u679c\uff1a\u6267\u884cjava -jar \u2013Xmn8m \u2013Xms32m -Xmx32m SwingSet2.jar\uff0c\u7cfb\u7edf\u6b63\u5e38\u8fd0\u884c\u3002<\/p>\n<h2><strong>7\uff0e JVM \u00a0Runtime Data Area\uff08\u8fd0\u884c\u65f6\u6570\u636e\u533a\uff09\uff1a<\/strong><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/img\/201410\/16150211_zgfQ.jpg\" alt=\"\" width=\"558\" height=\"289\" \/><\/p>\n<p>\u56fe3\uff1aJVM\u8fd0\u884c\u65f6\u6570\u636e\u533a(\u4e00)<\/p>\n<p>Heap:\u00a0JVM\u53ea\u6709\u4e00\u4e2a\u4e3a\u6240\u6709\u7ebf\u7a0b\u6240\u5171\u4eab\u7684\u5806\uff0c\u6240\u6709\u7684\u7c7b\u5b9e\u4f8b\u548c\u6570\u7ec4\u90fd\u662f\u5728\u5806\u4e2d\u521b\u5efa\u7684\u3002<\/p>\n<p>Method area:\u00a0JVM\u53ea\u6709\u4e00\u4e2a\u4e3a\u6240\u6709\u7684\u7ebf\u7a0b\u6240\u5171\u4eab\u7684\u65b9\u6cd5\u533a\u3002\u5b83\u5b58\u50a8\u7c7b\u7ed3\u6784\uff0c\u4f8b\u5982\u8fd0\u884c\u65f6\u5e38\u91cf\u6c60\uff0c\u6210\u5458\u548c\u65b9\u6cd5\u6570\u636e\u4ee5\u53ca\u65b9\u6cd5\u3001\u6784\u9020\u65b9\u6cd5\u7684\u4ee3\u7801\u3002<\/p>\n<p>Java Stacks:\u6bcf\u4e2aJVM\u7ebf\u7a0b\u62e5\u6709\u4e00\u4e2a\u79c1\u6709\u7684\u6808\u3002<\/p>\n<p>Pc registers:\u00a0JVM\u53ef\u4ee5\u540c\u65f6\u652f\u6301\u8fd0\u884c\u591a\u4e2a\u7ebf\u7a0b\uff0c\u56e0\u6b64\u6bcf\u4e2a\u7ebf\u7a0b\u9700\u8981\u5404\u81ea\u7684PC(program\u00a0counter)\u5bc4\u5b58\u5668\u3002<\/p>\n<p>Native method stacks:\u00a0\u4fdd\u5b58native\u65b9\u6cd5\u8fdb\u5165\u533a\u57df\u7684\u5730\u5740\u00a0\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/img\/201410\/16150211_1NKz.jpg\" alt=\"\" width=\"558\" height=\"252\" \/><\/p>\n<p>\u56fe4\uff1aJVM\u8fd0\u884c\u65f6\u6570\u636e\u533a(\u4e8c)<\/p>\n<p>Heap\u548cMethod area\u88ab\u6240\u6709\u7ebf\u7a0b\u5171\u4eab\uff0c\u5176\u751f\u5b58\u671f\u548cJVM\u7684\u751f\u5b58\u671f\u76f8\u540c\uff1bJava Stacks\u3001Pc registers\u3001Native method stacks\u88ab\u6bcf\u4e2a\u7ebf\u7a0b\u72ec\u81ea\u62e5\u6709\uff0c\u5176\u751f\u5b58\u671f\u548c\u7ebf\u7a0b\u7684\u751f\u5b58\u671f\u76f8\u540c\u3002<\/p>\n<h2><strong>8. \u5e38\u89c1\u7684\u5185\u5b58\u6cc4\u9732\u9519\u8bef<\/strong><\/h2>\n<p>\u5f88\u591a\u5f00\u53d1\u4eba\u5458\u90fd\u78b0\u5230\u8fc7java.lang.OutOfMemoryError\u7684\u9519\u8bef\u3002\u8fd9\u79cd\u9519\u8bef\u53c8\u5206\u4e24\u79cd\uff1ajava.lang.OutOfMemoryError: Java heap space\u548cjava.lang.OutOfMemoryError: PermGen space\u3002\u5f15\u8d77\u8fd9\u79cd\u9519\u8bef\u7684\u539f\u56e0\u53ef\u80fd\u662f\u7a0b\u5e8f\u95ee\u9898\uff0c\u4e5f\u53ef\u80fd\u662f\u662fJVM\u53c2\u6570\u914d\u7f6e\u95ee\u9898\u5f15\u8d77\u7684\u3002\u82e5\u662f\u53c2\u6570\u95ee\u9898\uff0c\u524d\u8005\u53ef\u4ee5\u540c\u8fc7\u914d\u7f6e-Xms\u548c-Xmx\u53c2\u6570\u6765\u8bbe\u7f6e\uff0c\u800c\u540e\u8005\u53ef\u4ee5\u901a\u8fc7\u914d\u7f6e\u00a0-XX:PermSize\u548c-XX:MaxPermSize\u6765\u8bbe\u7f6e\u3002<\/p>\n<h2><strong>9\uff0e \u53c2\u8003\u8d44\u6599\uff1a<\/strong><\/h2>\n<p>1.\u00a0 A brief history of garbage collection \u2013<\/p>\n<p><a href=\"http:\/\/www-128.ibm.com\/developerworks\/java\/library\/j-jtp10283\/\" rel=\"nofollow\">http:\/\/www-128.ibm.com\/developerworks\/java\/library\/j-jtp10283\/<\/a><\/p>\n<p>2.\u00a0 Garbage collection in the HotSpot JVM \u2013<\/p>\n<p><a href=\"http:\/\/www-128.ibm.com\/developerworks\/java\/library\/j-jtp11253\/\" rel=\"nofollow\">http:\/\/www-128.ibm.com\/developerworks\/java\/library\/j-jtp11253\/<\/a><\/p>\n<p>3.\u00a0 Tuning Garbage Collection with the 5.0 JavaTM Virtual Machine<\/p>\n<p><a href=\"http:\/\/www-128.ibm.com\/developerworks\/java\/library\/j-jtp11253\/\" rel=\"nofollow\">http:\/\/java.sun.com\/docs\/hotspot\/gc5.0\/gc_tuning_5.html<\/a><\/p>\n<p>4.\u00a0 Diagnosing a GC problem \u2013<\/p>\n<p><a href=\"http:\/\/java.sun.com\/docs\/hotspot\/gc1.4.2\/example.html\" rel=\"nofollow\">http:\/\/java.sun.com\/docs\/hotspot\/gc1.4.2\/example.html<\/a><\/p>\n<p><a href=\"http:\/\/www.precisejava.com\/\" rel=\"nofollow\">5\u3001http:\/\/www.precisejava.com<\/a><\/p>\n<\/div>\n<div>GC \uff08minor \uff09\u65e5\u5fd7<br \/>\n<img decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/img\/201410\/16150211_sxjk.jpg\" alt=\"\" \/><\/div>\n<div>Full GC \u65e5\u5fd7<\/div>\n<div><img decoding=\"async\" src=\"http:\/\/static.oschina.net\/uploads\/img\/201410\/16150212_wlvm.jpg\" alt=\"\" \/><\/div>\n<div>-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -XX:-HandlePromotionFailure -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps<br \/>\n-XX:+PrintGCDetails -XX:+PrintTenuringDistribution<\/div>\n<\/div>\n<\/div>\n<div class=\"blog-opr\">\n<div class=\"blog-copyright\">\u539f\u6587\u5730\u5740\uff1a<a href=\"http:\/\/www.360doc.com\/content\/12\/1023\/16\/9615799_243296263.shtml\" target=\"_blank\">http:\/\/www.360doc.com\/content\/12\/1023\/16\/9615799_243296263.shtml<\/a><\/div>\n<\/div>\n<p>\u8f6c\u8f7d\u8bf7\u6ce8\u660e\uff1a<a href=\"https:\/\/www.chenweikang.top\">\u5de6\u624b\u4ee3\u7801\u53f3\u624b\u8bd7<\/a> &raquo; <a href=\"https:\/\/www.chenweikang.top\/?p=331\">java \u865a\u62df\u673a--\u65b0\u751f\u4ee3\u4e0e\u8001\u5e74\u4ee3GC<\/a><\/p><div class=\"__youshang\">\r\n            <div id=\"__youshang_popup\" class=\"wechat popup\" style=\"display: none;\">\r\n                <div class=\"head\">~\u8c22\u8c22\u6253\u8d4f~<\/div>\r\n                <div class=\"qrcode\"><div class=\"qrcode-li wechat\" ><img src=\"https:\/\/www.chenweikang.top\/wp-content\/uploads\/2019\/07\/wexin.png\" \/><\/div><div class=\"qrcode-li alipay\" style=\"display:none;\"><img src=\"https:\/\/www.chenweikang.top\/wp-content\/uploads\/2019\/07\/ali-pay.png\" \/><\/div><div class=\"qrcode-li hongbao\" style=\"display:none;\"><img src=\"https:\/\/www.chenweikang.top\/wp-content\/uploads\/2019\/07\/ali-hongbao.png\" \/><\/div><\/div>\r\n                <ul class=\"platform\"><li class=\"icon-wechat active\" data-bg-color=\"#05af4e\" data-thanks=\"~\u8c22\u8c22\u6253\u8d4f~\"><\/li><li class=\"icon-alipay \" data-bg-color=\"#00a2ea\" data-thanks=\"~\u8c22\u8c22\u6253\u8d4f~\"><\/li><li class=\"icon-hongbao \" data-bg-color=\"#dd5746\" data-thanks=\"<p>\u626b\u7801\u9886\u7ea2\u5305<\/p><p style='margin-top: 24px;'>\uff08\u4f59\u989d\u5b9d\u652f\u4ed8\u65f6\u53ef\u62b5\u73b0\uff09<\/p>\"><\/li><\/ul>\r\n            <\/div>\r\n            <a href=\"javascript:void(0);\" id=\"__youshang_btn\">\u8d4f<\/a>\r\n        <\/div>","protected":false},"excerpt":{"rendered":"<p>1\uff0e Java\u5806\u4e2d\u5404\u4ee3\u5206\u5e03\uff1a \u56fe1\uff1aJava\u5806\u4e2d\u5404\u4ee3\u5206\u5e03 Young\uff1a\u4e3b\u8981\u662f\u7528\u6765\u5b58\u653e\u65b0\u751f\u7684\u5bf9\u8c61\u3002 Old\uff1a\u4e3b\u8981 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[20],"class_list":["post-331","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java"],"_links":{"self":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/posts\/331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=331"}],"version-history":[{"count":0,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/posts\/331\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.chenweikang.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}