{"id":649,"date":"2024-11-14T12:00:12","date_gmt":"2024-11-14T03:00:12","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=649"},"modified":"2025-03-24T08:52:57","modified_gmt":"2025-03-23T23:52:57","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91java%e3%81%ae%e3%83%a1%e3%83%a2%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%af%e5%af%be%e7%ad%96%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%892024-%e5%8e%9f%e5%9b%a0","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=649","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011Java\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u5b8c\u5168\u30ac\u30a4\u30c92024 &#8211; \u539f\u56e0\u7279\u5b9a\u304b\u3089\u4fee\u6b63\u307e\u30677\u3064\u306e\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"<div id=\"sgb-css-id-1\">\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">\u306f\u3058\u3081\u306b<\/a>  <\/li>  <li>    <a href=\"#i-2\">\uff11\uff0e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3068\u306f\uff1fJava\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u77e5\u3063\u3066\u304a\u304f\u3079\u304d\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-3\">1.1 \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u767a\u751f\u3059\u308b\u30e1\u30ab\u30cb\u30ba\u30e0<\/a>      <\/li>      <li>        <a href=\"#i-4\">1.2 Java\u306e\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4ed5\u7d44\u307f<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-8\">1.3 \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u53ca\u307c\u3059\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u5f71\u97ff<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-13\">\uff12\uff0eJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u767a\u751f\u3059\u308b7\u3064\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u30d1\u30bf\u30fc\u30f3<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-14\">2.1 \u9759\u7684\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af<\/a>      <\/li>      <li>        <a href=\"#i-15\">2.2 \u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4e0d\u9069\u5207\u306a\u4f7f\u7528<\/a>      <\/li>      <li>        <a href=\"#i-16\">2.3 \u30af\u30ed\u30fc\u30b8\u30e3\u3055\u308c\u3066\u3044\u306a\u3044\u30ea\u30bd\u30fc\u30b9<\/a>      <\/li>      <li>        <a href=\"#i-17\">2.4 \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u5b9f\u88c5\u30df\u30b9<\/a>      <\/li>      <li>        <a href=\"#i-18\">2.5 \u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc\u306e\u672a\u89e3\u9664<\/a>      <\/li>      <li>        <a href=\"#i-19\">2.6 \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u8a2d\u5b9a\u30df\u30b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">2.7 \u5185\u90e8\u30af\u30e9\u30b9\u306b\u3088\u308b\u53c2\u7167\u4fdd\u6301<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-21\">\uff13\uff0e\u5b9f\u8df5\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u51fa\u624b\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-22\">3.1 JVM\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u306e\u53d6\u5f97\u3068\u5206\u6790\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-25\">3.2 Eclipse Memory Analyzer\u306e\u4f7f\u3044\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-28\">3.3 Visual VM\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-33\">\uff14\uff0e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-34\">4.1 WeakHashMap\u306e\u9069\u5207\u306a\u4f7f\u7528\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-35\">4.2 try-with-resources\u306e\u6d3b\u7528<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-36\">4.3 \u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u8a2d\u8a08\u306e\u5b9f\u88c5\u4f8b<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-37\">\uff15\uff0eSpring Framework\u306b\u304a\u3051\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-38\">5.1 Spring\u306eBean\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-41\">5.2 DI\u30b3\u30f3\u30c6\u30ca\u306b\u304a\u3051\u308b\u5faa\u74b0\u53c2\u7167\u306e\u9632\u6b62<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-44\">5.3 Spring\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6700\u9069\u306a\u30e1\u30e2\u30ea\u8a2d\u5b9a<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-48\">\uff16\uff0e\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u884c\u3046\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u4e88\u9632\u7b56<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-49\">6.1 \u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3067\u306e\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8<\/a>      <\/li>      <li>        <a href=\"#i-52\">6.2 \u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u3067\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u8a3c<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-55\">6.3 \u7d99\u7d9a\u7684\u306a\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-59\">\uff17\uff0e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\uff1a\u3088\u304f\u3042\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u4e8b\u4f8b\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-60\">7.1 \u5927\u898f\u6a21\u30d0\u30c3\u30c1\u51e6\u7406\u3067\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56<\/a>      <\/li>      <li>        <a href=\"#i-63\">7.2 Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406\u306e\u6700\u9069\u5316<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-66\">7.3 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306e\u6ce8\u610f\u70b9<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-69\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306e\u5b9f\u73fe\u306b\u5411\u3051\u3066<\/a>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">\u306f\u3058\u3081\u306b<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-2\">\n<p>Java\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5b9a\u904b\u7528\u306b\u304a\u3044\u3066\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306f\u6700\u3082\u5384\u4ecb\u306a\u554f\u984c\u306e\u4e00\u3064\u3067\u3059\u3002\u4e00\u898b\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u3048\u3066\u3082\u3001\u6642\u9593\u306e\u7d4c\u904e\u3068\u3068\u3082\u306b\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u304c\u5897\u52a0\u3057\u3001\u6700\u7d42\u7684\u306b\u306f\u30b7\u30b9\u30c6\u30e0\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4f4e\u4e0b\u3084\u30af\u30e9\u30c3\u30b7\u30e5\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-3\">\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Java\u306b\u304a\u3051\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u7684\u306a\u5bfe\u7b56\u624b\u6cd5\u307e\u3067\u3001\u4f53\u7cfb\u7684\u306b\u89e3\u8aac\u3057\u307e\u3059\u30022024\u5e74\u306e\u6700\u65b0\u306eJava\u30d0\u30fc\u30b8\u30e7\u30f3\u3084\u30c4\u30fc\u30eb\u306b\u5bfe\u5fdc\u3057\u305f\u5185\u5bb9\u3067\u3001\u73fe\u5834\u3067\u5373\u6d3b\u7528\u3067\u304d\u308b\u6280\u8853\u60c5\u5831\u3092\u304a\u5c4a\u3051\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-4\">\n<h4 class=\"wp-block-heading\" id=\"i-1\">\u672c\u8a18\u4e8b\u3067\u5b66\u3079\u308b\u3053\u3068\u30fb\u74b0\u5883\u60c5\u5831<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-9\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u672c\u8a18\u4e8b\u3067\u5b66\u3079\u308b\u3053\u3068<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-5\">\n<li>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u57fa\u672c\u7684\u306a\u30e1\u30ab\u30cb\u30ba\u30e0\u3068\u5f71\u97ff<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-6\">\n<li>\u3088\u304f\u3042\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u30d1\u30bf\u30fc\u30f3\u3068\u305d\u306e\u5bfe\u51e6\u6cd5<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-7\">\n<li>\u5b9f\u8df5\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u51fa\u30fb\u5206\u6790\u624b\u6cd5<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-8\">\n<li>Spring Framework\u3067\u306e\u5177\u4f53\u7684\u306a\u5bfe\u7b56\u65b9\u6cd5<\/li>\n<\/div>\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u4e88\u9632\u7b56\u3068\u904b\u7528\u30ce\u30a6\u30cf\u30a6<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-15\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u74b0\u5883\u60c5\u5831<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\"><div id=\"sgb-css-id-10\">\n<li>Java Version\uff1a 17\u4ee5\u964d<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-11\">\n<li>Spring Framework\uff1a 6.x<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-12\">\n<li>\u4e3b\u8981\u306a\u76e3\u8996\u30fb\u5206\u6790\u30c4\u30fc\u30eb<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-13\">\n<li>Eclipse Memory Analyzer (MAT)<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-14\">\n<li>Visual VM<\/li>\n<\/div>\n\n\n<li>JDK Flight Recorder<\/li>\n<\/ul>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-16\">\n<p>\u305d\u308c\u3067\u306f\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u57fa\u790e\u304b\u3089\u3001\u5b9f\u8df5\u7684\u306a\u5bfe\u7b56\u624b\u6cd5\u307e\u3067\u3001\u9806\u3092\u8ffd\u3063\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-17\">\n<h2 class=\"wp-block-heading\" id=\"i-2\">\uff11\uff0e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3068\u306f\uff1fJava\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u77e5\u3063\u3066\u304a\u304f\u3079\u304d\u57fa\u790e\u77e5\u8b58<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-18\">\n<p>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u4e0d\u8981\u306b\u306a\u3063\u305f\u30e1\u30e2\u30ea\u3092\u89e3\u653e\u305b\u305a\u3001\u7d99\u7d9a\u7684\u306b\u30e1\u30e2\u30ea\u3092\u6d88\u8cbb\u3057\u7d9a\u3051\u308b\u72b6\u614b\u3092\u6307\u3057\u307e\u3059\u3002Java\u3067\u306f\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\uff08GC\uff09\u304c\u81ea\u52d5\u7684\u306b\u30e1\u30e2\u30ea\u7ba1\u7406\u3092\u884c\u3044\u307e\u3059\u304c\u3001\u7279\u5b9a\u306e\u72b6\u6cc1\u4e0b\u3067\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-19\">\n<h3 class=\"wp-block-heading\" id=\"i-3\">1.1 \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u767a\u751f\u3059\u308b\u30e1\u30ab\u30cb\u30ba\u30e0<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-20\">\n<p>Java\u306b\u304a\u3051\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306f\u3001\u4e3b\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3067\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-21\">\n<p><strong>1. \u5f37\u53c2\u7167\u306e\u7dad\u6301<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-22\">\n<p>\u3000\u25cf \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u4e0d\u8981\u306b\u306a\u3063\u3066\u3082\u3001\u3069\u3053\u304b\u3067\u5f37\u53c2\u7167\u304c\u4fdd\u6301\u3055\u308c\u7d9a\u3051\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-23\">\n<p>\u3000\u25cf GC\u304c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u56de\u53ce\u3067\u304d\u306a\u3044\u72b6\u614b\u304c\u7d99\u7d9a\u3059\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-24\">\n<p><strong>2. \u53c2\u7167\u306e\u9023\u9396<\/strong><\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   public class LeakExample {\n       private static final List&lt;Object&gt; stored = new ArrayList&lt;&gt;();\n\n       public void addData(Object data) {\n           stored.add(data);  \/\/ static\u30ea\u30b9\u30c8\u3078\u306e\u8ffd\u52a0\u306f\u6c38\u7d9a\u7684\u306a\u53c2\u7167\u3092\u4f5c\u6210\n       }\n   }<\/pre>\n\n\n<div id=\"sgb-css-id-25\">\n<p><strong>3. \u5faa\u74b0\u53c2\u7167<\/strong><\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   public class Node {\n       private Node next;\n       private Object data;\n\n       public void setNext(Node node) {\n           this.next = node;  \/\/ \u5faa\u74b0\u53c2\u7167\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\n       }\n   }<\/pre>\n\n\n<div id=\"sgb-css-id-26\">\n<h3 class=\"wp-block-heading\" id=\"i-4\">1.2 Java\u306e\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4ed5\u7d44\u307f<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-27\">\n<h4 class=\"wp-block-heading\" id=\"i-5\">1. \u30de\u30fc\u30af\u30fb\u30a2\u30f3\u30c9\u30fb\u30b9\u30a4\u30fc\u30d7\u306e\u57fa\u672c\u539f\u7406<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-28\">\n<p>\u3000<strong>1. \u30de\u30fc\u30af\u30d5\u30a7\u30fc\u30ba<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-29\">\n<p>\u3000\u3000\u25cf GC\u30eb\u30fc\u30c8\u304b\u3089\u5230\u9054\u53ef\u80fd\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30de\u30fc\u30af<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-30\">\n<p>\u3000\u3000\u25cf \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b9\u30ec\u30c3\u30c9\u306f\u4e00\u6642\u505c\u6b62\uff08Stop-the-World\uff09<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-31\">\n<p>\u3000<strong>2. \u30b9\u30a4\u30fc\u30d7\u30d5\u30a7\u30fc\u30ba<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-32\">\n<p>\u3000\u3000\u25cf \u30de\u30fc\u30af\u3055\u308c\u3066\u3044\u306a\u3044\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u89e3\u653e<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-33\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u306e\u65ad\u7247\u5316\u3092\u89e3\u6d88<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-34\">\n<h4 class=\"wp-block-heading\" id=\"i-6\">2. \u4e16\u4ee3\u5225GC<\/h4>\n<\/div>\n\n<div id=\"id-d3a1ca3a-661a-4d37-a670-3d0f592cb181\"><div id=\"sgb-css-id-35\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u4e16\u4ee3<\/th><th>\u7279\u5fb4<\/th><th>GC\u983b\u5ea6<\/th><\/tr><\/thead><tbody><tr><td>Young\u4e16\u4ee3<\/td><td>\u65b0\u898f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u683c\u7d0d<\/td><td>\u983b\u7e41<\/td><\/tr><tr><td>Old\u4e16\u4ee3<\/td><td>\u9577\u671f\u5b58\u7d9a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8<\/td><td>\u4f4e\u983b\u5ea6<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-36\">\n<h4 class=\"wp-block-heading\" id=\"i-7\">3. GC\u30eb\u30fc\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-37\">\n<p>\u3000\u25cf \u30b9\u30bf\u30c3\u30af\u5909\u6570<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-38\">\n<p>\u3000\u25cf static\u5909\u6570<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-39\">\n<p>\u3000\u25cf JNI\u306b\u3088\u308b\u30cd\u30a4\u30c6\u30a3\u30d6\u53c2\u7167<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-40\">\n<h3 class=\"wp-block-heading\" id=\"i-8\">1.3 \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u53ca\u307c\u3059\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3078\u306e\u5f71\u97ff<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-41\">\n<h4 class=\"wp-block-heading\" id=\"i-9\">1. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3078\u306e\u5f71\u97ff<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-42\">\n<p>\u3000\u25cf <strong>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u5897\u52a0<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-43\">\n<p>\u3000\u3000\u25cf \u30d2\u30fc\u30d7\u30e1\u30e2\u30ea\u306e\u67af\u6e07<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-44\">\n<p>\u3000\u3000\u25cf GC\u983b\u5ea6\u306e\u5897\u52a0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-45\">\n<p>\u3000\u3000\u25cf \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5fdc\u7b54\u6642\u9593\u4f4e\u4e0b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-46\">\n<h4 class=\"wp-block-heading\" id=\"i-10\">2. \u30b7\u30b9\u30c6\u30e0\u3078\u306e\u5f71\u97ff<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u5f71\u97ff\u5ea6\u306e\u6bb5\u968e\uff1a\n1. \u8efd\u5ea6\uff1a\u5b9a\u671f\u7684\u306aGC\u3067\u5bfe\u5fdc\u53ef\u80fd\n2. \u4e2d\u5ea6\uff1a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4f4e\u4e0b\u304c\u9855\u8457\n3. \u91cd\u5ea6\uff1aOutOfMemoryError\u767a\u751f<\/pre>\n\n\n<div id=\"sgb-css-id-47\">\n<h4 class=\"wp-block-heading\" id=\"i-11\">3. \u5177\u4f53\u7684\u306a\u75c7\u72b6<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-48\">\n<p>\u3000\u25cf \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9045\u5ef6\u5897\u52a0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-49\">\n<p>\u3000\u25cf GC\u30ed\u30b0\u306e\u7570\u5e38\u306a\u5897\u52a0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-50\">\n<p>\u3000\u25cf \u30b5\u30fc\u30d0\u30fc\u306e\u30b9\u30ef\u30c3\u30d4\u30f3\u30b0\u767a\u751f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-51\">\n<p>\u3000\u25cf \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30af\u30e9\u30c3\u30b7\u30e5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-52\">\n<h4 class=\"wp-block-heading\" id=\"i-12\">4. \u30d3\u30b8\u30cd\u30b9\u3078\u306e\u5f71\u97ff<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-53\">\n<p>\u3000\u25cf \u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u306e\u4f4e\u4e0b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-54\">\n<p>\u3000\u25cf \u30b7\u30b9\u30c6\u30e0\u904b\u7528\u30b3\u30b9\u30c8\u306e\u5897\u52a0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-55\">\n<p>\u3000\u25cf \u969c\u5bb3\u5bfe\u5fdc\u5de5\u6570\u306e\u767a\u751f<\/p>\n<\/div>\n\n\n<p>\u3000\u25cf \u30b5\u30fc\u30d3\u30b9\u505c\u6b62\u306e\u30ea\u30b9\u30af<\/p>\n\n\n<div id=\"sgb-css-id-56\">\n<p>\u3053\u306e\u3088\u3046\u306a\u5f71\u97ff\u3092\u9632\u3050\u305f\u3081\u306b\u306f\u3001\u9069\u5207\u306a\u30e1\u30e2\u30ea\u7ba1\u7406\u3068\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5177\u4f53\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u30d1\u30bf\u30fc\u30f3\u3068\u305d\u306e\u5bfe\u7b56\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-57\">\n<h2 class=\"wp-block-heading\" id=\"i-13\">\uff12\uff0eJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u767a\u751f\u3059\u308b7\u3064\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u30d1\u30bf\u30fc\u30f3<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-58\">\n<p>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306f\u7279\u5b9a\u306e\u30d1\u30bf\u30fc\u30f3\u3067\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u591a\u304f\u3001\u3053\u308c\u3089\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u52b9\u679c\u7684\u306a\u4e88\u9632\u3068\u5bfe\u7b56\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-59\">\n<h3 class=\"wp-block-heading\" id=\"i-14\">2.1 \u9759\u7684\u30d5\u30a3\u30fc\u30eb\u30c9\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-60\">\n<p>\u9759\u7684\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u5168\u4f53\u3067\u7dad\u6301\u3055\u308c\u308b\u305f\u3081\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u4e00\u822c\u7684\u306a\u539f\u56e0\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class StaticLeakExample {\n    \/\/ \u5371\u967a\uff1a\u5236\u9650\u306e\u306a\u3044\u9759\u7684\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\n    private static final List&lt;Session&gt; activeSessions = new ArrayList&lt;&gt;();\n\n    public void addSession(Session session) {\n        activeSessions.add(session);  \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u7121\u9650\u306b\u84c4\u7a4d\u3055\u308c\u308b\u53ef\u80fd\u6027\n    }\n\n    \/\/ \u6539\u5584\u6848\uff1a\u671f\u9650\u5207\u308c\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u524a\u9664\u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u88c5\n    public void cleanExpiredSessions() {\n        activeSessions.removeIf(session -&gt; session.isExpired());\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-61\">\n<h3 class=\"wp-block-heading\" id=\"i-15\">2.2 \u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4e0d\u9069\u5207\u306a\u4f7f\u7528<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-62\">\n<p>\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3078\u306e\u8ffd\u52a0\u306e\u307f\u3092\u884c\u3044\u3001\u4e0d\u8981\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3057\u306a\u3044\u30b1\u30fc\u30b9\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CacheLeakExample {\n    private Map&lt;String, byte[]&gt; dataCache = new HashMap&lt;&gt;();\n\n    \/\/ \u5371\u967a\uff1a\u30b5\u30a4\u30ba\u5236\u9650\u306e\u306a\u3044\u30ad\u30e3\u30c3\u30b7\u30e5\n    public void cacheData(String key, byte[] data) {\n        dataCache.put(key, data);\n    }\n\n    \/\/ \u6539\u5584\u6848\uff1aLRU\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u4f7f\u7528\n    private Map&lt;String, byte[]&gt; lruCache = new LinkedHashMap&lt;&gt;(16, 0.75f, true) {\n        @Override\n        protected boolean removeEldestEntry(Map.Entry&lt;String, byte[]&gt; eldest) {\n            return size() &gt; 100;  \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30a4\u30ba\u3092\u5236\u9650\n        }\n    };\n}<\/pre>\n\n\n<div id=\"sgb-css-id-63\">\n<h3 class=\"wp-block-heading\" id=\"i-16\">2.3 \u30af\u30ed\u30fc\u30b8\u30e3\u3055\u308c\u3066\u3044\u306a\u3044\u30ea\u30bd\u30fc\u30b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-64\">\n<p>\u30ea\u30bd\u30fc\u30b9\u306e\u9069\u5207\u306a\u30af\u30ed\u30fc\u30ba\u51e6\u7406\u304c\u884c\u308f\u308c\u306a\u3044\u3053\u3068\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ResourceLeakExample {\n    \/\/ \u5371\u967a\uff1a\u30ea\u30bd\u30fc\u30b9\u304c\u78ba\u5b9f\u306b\u30af\u30ed\u30fc\u30ba\u3055\u308c\u306a\u3044\n    public void processFile(String path) throws IOException {\n        FileInputStream fis = new FileInputStream(path);\n        \/\/ \u4f8b\u5916\u767a\u751f\u6642\u306b\u30ea\u30bd\u30fc\u30b9\u304c\u30ea\u30fc\u30af\u3059\u308b\u53ef\u80fd\u6027\n        fis.read();\n        fis.close();\n    }\n\n    \/\/ \u6539\u5584\u6848\uff1atry-with-resources\u306e\u4f7f\u7528\n    public void processFileCorrect(String path) throws IOException {\n        try (FileInputStream fis = new FileInputStream(path)) {\n            fis.read();\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-65\">\n<h3 class=\"wp-block-heading\" id=\"i-17\">2.4 \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u5b9f\u88c5\u30df\u30b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-66\">\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u5b9f\u88c5\u306b\u304a\u3051\u308b\u4e00\u822c\u7684\u306a\u554f\u984c\u70b9\u3068\u305d\u306e\u89e3\u6c7a\u7b56\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CacheImplementationExample {\n    \/\/ \u5371\u967a\uff1aWeakHashMap\u306e\u8aa4\u7528\n    private Map&lt;Key, Value&gt; cache = new WeakHashMap&lt;&gt;();\n\n    \/\/ \u6539\u5584\u6848\uff1a\u30ad\u30e3\u30c3\u30b7\u30e5\u30a8\u30f3\u30c8\u30ea\u306e\u6709\u52b9\u671f\u9650\u7ba1\u7406\n    private Cache&lt;Key, Value&gt; guavaCache = CacheBuilder.newBuilder()\n        .maximumSize(1000)\n        .expireAfterWrite(10, TimeUnit.MINUTES)\n        .build();\n}<\/pre>\n\n\n<div id=\"sgb-css-id-67\">\n<h3 class=\"wp-block-heading\" id=\"i-18\">2.5 \u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc\u306e\u672a\u89e3\u9664<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-68\">\n<p>\u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc\u304c\u9069\u5207\u306b\u89e3\u9664\u3055\u308c\u306a\u3044\u3053\u3068\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ListenerLeakExample {\n    private List&lt;DataChangeListener&gt; listeners = new ArrayList&lt;&gt;();\n\n    \/\/ \u5371\u967a\uff1a\u30ea\u30b9\u30ca\u30fc\u304c\u660e\u793a\u7684\u306b\u89e3\u9664\u3055\u308c\u306a\u3044\n    public void addListener(DataChangeListener listener) {\n        listeners.add(listener);\n    }\n\n    \/\/ \u6539\u5584\u6848\uff1aWeakReference\u306e\u4f7f\u7528\n    private List&lt;WeakReference&lt;DataChangeListener&gt;&gt; safeListeners = \n        new ArrayList&lt;&gt;();\n\n    public void addSafeListener(DataChangeListener listener) {\n        safeListeners.add(new WeakReference&lt;&gt;(listener));\n    }\n\n    public void cleanupListeners() {\n        safeListeners.removeIf(ref -&gt; ref.get() == null);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-69\">\n<h3 class=\"wp-block-heading\" id=\"i-19\">2.6 \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u306e\u8a2d\u5b9a\u30df\u30b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-70\">\n<p>\u4e0d\u9069\u5207\u306a\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u8a2d\u5b9a\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u4f8b\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ThreadPoolLeakExample {\n    \/\/ \u5371\u967a\uff1a\u7121\u5236\u9650\u306e\u30ad\u30e5\u30fc\u3092\u6301\u3064\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\n    ExecutorService executor = Executors.newFixedThreadPool(10);\n\n    \/\/ \u6539\u5584\u6848\uff1a\u9069\u5207\u306a\u5883\u754c\u5024\u3092\u8a2d\u5b9a\u3057\u305f\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\n    ExecutorService safeExecutor = new ThreadPoolExecutor(\n        5, 10, \/\/ \u30b3\u30a2\u30d7\u30fc\u30eb\u6570\u3068\u6700\u5927\u30d7\u30fc\u30eb\u6570\n        60L, TimeUnit.SECONDS, \/\/ \u30b9\u30ec\u30c3\u30c9\u4fdd\u6301\u6642\u9593\n        new ArrayBlockingQueue&lt;&gt;(1000), \/\/ \u6709\u754c\u30ad\u30e5\u30fc\n        new ThreadPoolExecutor.CallerRunsPolicy() \/\/ \u62d2\u5426\u30dd\u30ea\u30b7\u30fc\n    );\n}<\/pre>\n\n\n<div id=\"sgb-css-id-71\">\n<h3 class=\"wp-block-heading\" id=\"i-20\">2.7 \u5185\u90e8\u30af\u30e9\u30b9\u306b\u3088\u308b\u53c2\u7167\u4fdd\u6301<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-72\">\n<p>\u5185\u90e8\u30af\u30e9\u30b9\u304c\u5916\u90e8\u30af\u30e9\u30b9\u3078\u306e\u4e0d\u8981\u306a\u53c2\u7167\u3092\u4fdd\u6301\u3059\u308b\u3053\u3068\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class InnerClassLeakExample {\n    private byte[] largeData = new byte[1024 * 1024]; \/\/ 1MB\n\n    \/\/ \u5371\u967a\uff1a\u975estatic\u306a\u5185\u90e8\u30af\u30e9\u30b9\n    private class DataProcessor {\n        public void process() {\n            \/\/ \u5916\u90e8\u30af\u30e9\u30b9\u306elargeData\u3078\u306e\u6697\u9ed9\u306e\u53c2\u7167\u3092\u4fdd\u6301\n        }\n    }\n\n    \/\/ \u6539\u5584\u6848\uff1astatic\u5185\u90e8\u30af\u30e9\u30b9\u306e\u4f7f\u7528\n    private static class SafeDataProcessor {\n        private final byte[] data;\n\n        public SafeDataProcessor(byte[] data) {\n            this.data = data;\n        }\n\n        public void process() {\n            \/\/ \u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u306e\u307f\u3092\u660e\u793a\u7684\u306b\u53c2\u7167\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-73\">\n<p>\u5404\u30d1\u30bf\u30fc\u30f3\u306e\u5f71\u97ff\u5ea6\u3068\u5bfe\u7b56\u306e\u512a\u5148\u9806\u4f4d\uff1a<\/p>\n<\/div>\n\n<div id=\"id-e10441ae-7574-4f66-a28b-41ecdee8b0cb\"><div id=\"sgb-css-id-74\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u30d1\u30bf\u30fc\u30f3<\/th><th>\u5f71\u97ff\u5ea6<\/th><th>\u691c\u51fa\u306e\u5bb9\u6613\u3055<\/th><th>\u512a\u5148\u5ea6<\/th><\/tr><\/thead><tbody><tr><td>\u9759\u7684\u30d5\u30a3\u30fc\u30eb\u30c9<\/td><td>\u9ad8<\/td><td>\u5bb9\u6613<\/td><td>\u6700\u9ad8<\/td><\/tr><tr><td>\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u8aa4\u7528<\/td><td>\u9ad8<\/td><td>\u4e2d<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30ea\u30bd\u30fc\u30b9\u672a\u89e3\u653e<\/td><td>\u4e2d<\/td><td>\u5bb9\u6613<\/td><td>\u4e2d<\/td><\/tr><tr><td>\u30ad\u30e3\u30c3\u30b7\u30e5\u30df\u30b9<\/td><td>\u9ad8<\/td><td>\u96e3<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u30ea\u30b9\u30ca\u30fc\u672a\u89e3\u9664<\/td><td>\u4e2d<\/td><td>\u96e3<\/td><td>\u4e2d<\/td><\/tr><tr><td>\u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u8a2d\u5b9a<\/td><td>\u9ad8<\/td><td>\u4e2d<\/td><td>\u9ad8<\/td><\/tr><tr><td>\u5185\u90e8\u30af\u30e9\u30b9\u53c2\u7167<\/td><td>\u4f4e<\/td><td>\u5bb9\u6613<\/td><td>\u4f4e<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-75\">\n<p>\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306a\u5bfe\u7b56\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u591a\u304f\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u554f\u984c\u3092\u4e88\u9632\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-76\">\n<h2 class=\"wp-block-heading\" id=\"i-21\">\uff13\uff0e\u5b9f\u8df5\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u51fa\u624b\u6cd5<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-77\">\n<p>\u52b9\u679c\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306b\u306f\u3001\u9069\u5207\u306a\u691c\u51fa\u30c4\u30fc\u30eb\u3068\u5206\u6790\u624b\u6cd5\u306e\u6d3b\u7528\u304c\u4e0d\u53ef\u6b20\u3067\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u4e3b\u8981\u306a\u691c\u51fa\u624b\u6cd5\u3068\u30c4\u30fc\u30eb\u306e\u5177\u4f53\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-78\">\n<h3 class=\"wp-block-heading\" id=\"i-22\">3.1 JVM\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u306e\u53d6\u5f97\u3068\u5206\u6790\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-79\">\n<p>\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u306f\u3001\u7279\u5b9a\u6642\u70b9\u3067\u306eJVM\u306e\u30e1\u30e2\u30ea\u72b6\u614b\u3092\u5b8c\u5168\u306b\u8a18\u9332\u3057\u305f\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-80\">\n<h4 class=\"wp-block-heading\" id=\"i-23\">1. \u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u306e\u53d6\u5f97\u65b9\u6cd5<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-81\">\n<p>\u3000<strong>jmap\u3092\u4f7f\u7528\u3057\u305f\u53d6\u5f97<\/strong><\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30d7\u30ed\u30bb\u30b9ID\u3092\u6307\u5b9a\u3057\u3066\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u3092\u53d6\u5f97\njmap -dump:format=b,file=heap.hprof &lt;pid&gt;\n\n# OutOfMemoryError\u767a\u751f\u6642\u306b\u81ea\u52d5\u7684\u306b\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u3092\u53d6\u5f97\u3059\u308b\u8a2d\u5b9a\njava -XX:+HeapDumpOnOutOfMemoryError \\\n     -XX:HeapDumpPath=\/path\/to\/dumps \\\n     -jar application.jar<\/pre>\n\n\n<div id=\"sgb-css-id-82\">\n<h4 class=\"wp-block-heading\" id=\"i-24\">2. \u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u53d6\u5f97\u306e\u30d9\u30b9\u30c8\u30bf\u30a4\u30df\u30f3\u30b0<\/h4>\n<\/div>\n\n<div id=\"id-5739b260-046a-4ad8-9a5b-12255aadbec8\"><div id=\"sgb-css-id-83\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30bf\u30a4\u30df\u30f3\u30b0<\/th><th>\u76ee\u7684<\/th><th>\u30e1\u30ea\u30c3\u30c8<\/th><\/tr><\/thead><tbody><tr><td>\u5b9a\u671f\u7684<\/td><td>\u30c8\u30ec\u30f3\u30c9\u5206\u6790<\/td><td>\u7d4c\u6642\u5909\u5316\u306e\u628a\u63e1\u304c\u53ef\u80fd<\/td><\/tr><tr><td>\u9ad8\u8ca0\u8377\u6642<\/td><td>\u30d4\u30fc\u30af\u6642\u306e\u72b6\u614b\u78ba\u8a8d<\/td><td>\u5b9f\u969b\u306e\u554f\u984c\u3092\u6355\u6349\u3057\u3084\u3059\u3044<\/td><\/tr><tr><td>OOM\u76f4\u524d<\/td><td>\u76f4\u63a5\u7684\u306a\u539f\u56e0\u7279\u5b9a<\/td><td>\u6c7a\u5b9a\u7684\u306a\u8a3c\u62e0\u3092\u5f97\u3089\u308c\u308b<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-84\">\n<h3 class=\"wp-block-heading\" id=\"i-25\">3.2 Eclipse Memory Analyzer\u306e\u4f7f\u3044\u65b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-85\">\n<p>Eclipse Memory Analyzer (MAT) \u306f\u3001\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u3092\u8a73\u7d30\u306b\u5206\u6790\u3059\u308b\u305f\u3081\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-86\">\n<h4 class=\"wp-block-heading\" id=\"i-26\">1. \u57fa\u672c\u7684\u306a\u5206\u6790\u624b\u9806<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-87\">\n<p>\u30001. Leak Suspects Report \u306e\u751f\u6210<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \u624b\u9806\uff1a\n   1. File \u2192 Open Heap Dump\n   2. Leak Suspects Report \u3092\u9078\u629e\n   3. \u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\u3092\u5f85\u6a5f<\/pre>\n\n\n<div id=\"sgb-css-id-88\">\n<p>\u30002. \u4e3b\u8981\u306a\u5206\u6790\u30d3\u30e5\u30fc<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-89\">\n<p>\u3000\u3000\u25cf Histogram\uff1a \u30af\u30e9\u30b9\u5225\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6570\u3068\u30b5\u30a4\u30ba<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-90\">\n<p>\u3000\u3000\u25cf Dominator Tree\uff1a \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u9593\u306e\u53c2\u7167\u95a2\u4fc2<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-91\">\n<p>\u3000\u3000\u25cf Thread Overview\uff1a \u30b9\u30ec\u30c3\u30c9\u5225\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u72b6\u6cc1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-92\">\n<h4 class=\"wp-block-heading\" id=\"i-27\">2. \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u7279\u5b9a\u306e\u305f\u3081\u306e\u30af\u30a8\u30ea\u4f8b<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- \u7279\u5b9a\u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u691c\u7d22\nSELECT * FROM java.lang.Class c \nWHERE c.name LIKE \"com.example.%\"\n\n-- \u5927\u304d\u306a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u7279\u5b9a\nSELECT * FROM java.util.Collection c \nWHERE c.size &gt; 10000<\/pre>\n\n\n<div id=\"sgb-css-id-93\">\n<h3 class=\"wp-block-heading\" id=\"i-28\">3.3 Visual VM\u306b\u3088\u308b\u30e1\u30e2\u30ea\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-94\">\n<p>Visual VM\u306f\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067JVM\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u72b6\u6cc1\u3092\u76e3\u8996\u3067\u304d\u308b\u512a\u308c\u305f\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-95\">\n<h4 class=\"wp-block-heading\" id=\"i-29\">1. \u57fa\u672c\u7684\u306a\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u8a2d\u5b9a<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ JMX\u63a5\u7d9a\u3092\u6709\u52b9\u306b\u3059\u308b\u8d77\u52d5\u30aa\u30d7\u30b7\u30e7\u30f3\n-Dcom.sun.management.jmxremote\n-Dcom.sun.management.jmxremote.port=9010\n-Dcom.sun.management.jmxremote.ssl=false\n-Dcom.sun.management.jmxremote.authenticate=false<\/pre>\n\n\n<div id=\"sgb-css-id-96\">\n<h4 class=\"wp-block-heading\" id=\"i-30\">2. \u52b9\u679c\u7684\u306a\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u9805\u76ee<\/h4>\n<\/div>\n\n<div id=\"id-1f515c16-0ea7-4e21-b63d-5df27fd30f6e\"><div id=\"sgb-css-id-97\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u76e3\u8996\u9805\u76ee<\/th><th>\u78ba\u8a8d\u30dd\u30a4\u30f3\u30c8<\/th><th>\u8b66\u6212\u3059\u3079\u304d\u5146\u5019<\/th><\/tr><\/thead><tbody><tr><td>\u30d2\u30fc\u30d7\u4f7f\u7528\u91cf<\/td><td>\u5897\u52a0\u50be\u5411<\/td><td>\u7d99\u7d9a\u7684\u306a\u4e0a\u6607<\/td><\/tr><tr><td>GC\u983b\u5ea6<\/td><td>GC\u5b9f\u884c\u9593\u9694<\/td><td>\u983b\u7e41\u306aFull GC<\/td><\/tr><tr><td>Survivor\u6bd4\u7387<\/td><td>\u4e16\u4ee3\u9593\u306e\u9077\u79fb<\/td><td>Old\u9818\u57df\u306e\u6025\u5897<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-98\">\n<h4 class=\"wp-block-heading\" id=\"i-31\">3. \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30ab\u30a6\u30f3\u30bf\u306e\u8a2d\u5b9a<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!-- metrics.xml --&gt;\n&lt;config&gt;\n    &lt;metrics&gt;\n        &lt;heap-memory&gt;\n            &lt;warning&gt;80%&lt;\/warning&gt;\n            &lt;critical&gt;90%&lt;\/critical&gt;\n        &lt;\/heap-memory&gt;\n        &lt;gc-frequency&gt;\n            &lt;warning&gt;10\/min&lt;\/warning&gt;\n            &lt;critical&gt;20\/min&lt;\/critical&gt;\n        &lt;\/gc-frequency&gt;\n    &lt;\/metrics&gt;\n&lt;\/config&gt;<\/pre>\n\n\n<div id=\"sgb-css-id-99\">\n<h4 class=\"wp-block-heading\" id=\"i-32\">4. \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u51fa\u306e\u305f\u3081\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-100\">\n<p>\u3000<strong>1. \u521d\u671f\u78ba\u8a8d<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-101\">\n<p>\u3000\u3000\u25cf \u30d2\u30fc\u30d7\u4f7f\u7528\u91cf\u306e\u57fa\u672c\u30d1\u30bf\u30fc\u30f3\u78ba\u8a8d<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-102\">\n<p>\u3000\u3000\u25cf GC\u30ed\u30b0\u306e\u53ce\u96c6\u3068\u5206\u6790<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-103\">\n<p>\u3000\u3000\u25cf \u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u306e\u53d6\u5f97<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-104\">\n<p><strong>\u30002. \u8a73\u7d30\u5206\u6790<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-105\">\n<p>\u3000\u3000\u25cf \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210\/\u7834\u68c4\u306e\u8ffd\u8de1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-106\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0\u306e\u5b9f\u65bd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-107\">\n<p>\u3000\u3000\u25cf \u30db\u30c3\u30c8\u30b9\u30dd\u30c3\u30c8\u306e\u7279\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-108\">\n<p><strong>\u30003. \u539f\u56e0\u7279\u5b9a<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-109\">\n<p>\u3000\u3000\u25cf \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\u30d1\u30b9\u306e\u7279\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-110\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u30d1\u30bf\u30fc\u30f3\u306e\u5224\u5225<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u5f71\u97ff\u7bc4\u56f2\u306e\u8a55\u4fa1<\/p>\n\n\n<div id=\"sgb-css-id-111\">\n<p>\u3053\u306e\u3088\u3046\u306a\u4f53\u7cfb\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3088\u308a\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u65e9\u671f\u767a\u898b\u3068\u52b9\u679c\u7684\u306a\u5bfe\u7b56\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-112\">\n<h2 class=\"wp-block-heading\" id=\"i-33\">\uff14\uff0e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-113\">\n<p>\u52b9\u679c\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306b\u306f\u3001\u9069\u5207\u306a\u30c7\u30fc\u30bf\u69cb\u9020\u306e\u9078\u629e\u3068\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u306e\u9069\u7528\u304c\u91cd\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u5b9f\u8df5\u7684\u306a\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-114\">\n<h3 class=\"wp-block-heading\" id=\"i-34\">4.1 WeakHashMap\u306e\u9069\u5207\u306a\u4f7f\u7528\u65b9\u6cd5<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-115\">\n<p>WeakHashMap\u306f\u3001\u30ad\u30fc\u3078\u306e\u53c2\u7167\u304c\u5f31\u53c2\u7167\u3068\u306a\u308b\u305f\u3081\u3001\u30e1\u30e2\u30ea\u7ba1\u7406\u306b\u52b9\u679c\u7684\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u9069\u5207\u306a\u4f7f\u7528\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class CacheManager {\n    \/\/ \u30ad\u30fc\u3092\u5f31\u53c2\u7167\u3067\u4fdd\u6301\u3059\u308bWeakHashMap\n    private final WeakHashMap&lt;CacheKey, CacheValue&gt; cache = new WeakHashMap&lt;&gt;();\n\n    \/\/ \u30ab\u30b9\u30bf\u30e0\u30ad\u30fc\u30af\u30e9\u30b9\n    public static class CacheKey {\n        private final String identifier;\n\n        public CacheKey(String identifier) {\n            this.identifier = identifier;\n        }\n\n        @Override\n        public boolean equals(Object o) {\n            if (this == o) return true;\n            if (!(o instanceof CacheKey)) return false;\n            CacheKey cacheKey = (CacheKey) o;\n            return Objects.equals(identifier, cacheKey.identifier);\n        }\n\n        @Override\n        public int hashCode() {\n            return Objects.hash(identifier);\n        }\n    }\n\n    \/\/ \u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u64cd\u4f5c\u30e1\u30bd\u30c3\u30c9\n    public synchronized void put(CacheKey key, CacheValue value) {\n        cache.put(key, value);\n    }\n\n    public synchronized CacheValue get(CacheKey key) {\n        return cache.get(key);\n    }\n\n    \/\/ \u5b9a\u671f\u7684\u306a\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\n    public synchronized void cleanup() {\n        System.gc();  \/\/ GC\u3092\u4fc3\u3059\n        \/\/ WeakHashMap\u306f\u81ea\u52d5\u7684\u306b\u53c2\u7167\u3055\u308c\u3066\u3044\u306a\u3044\u30ad\u30fc\u3092\u524a\u9664\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-116\">\n<h3 class=\"wp-block-heading\" id=\"i-35\">4.2 try-with-resources\u306e\u6d3b\u7528<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-117\">\n<p>\u30ea\u30bd\u30fc\u30b9\u306e\u78ba\u5b9f\u306a\u89e3\u653e\u3092\u4fdd\u8a3c\u3059\u308btry-with-resources\u30d1\u30bf\u30fc\u30f3\u306e\u5b9f\u88c5\u4f8b\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ResourceManager {\n    \/\/ AutoCloseable\u3092\u5b9f\u88c5\u3057\u305f\u30ab\u30b9\u30bf\u30e0\u30ea\u30bd\u30fc\u30b9\n    public static class ManagedResource implements AutoCloseable {\n        private final ByteBuffer buffer;\n        private boolean isClosed = false;\n\n        public ManagedResource(int capacity) {\n            this.buffer = ByteBuffer.allocateDirect(capacity);\n        }\n\n        public void writeData(byte[] data) {\n            if (isClosed) {\n                throw new IllegalStateException(\"Resource is closed\");\n            }\n            buffer.put(data);\n        }\n\n        @Override\n        public void close() {\n            if (!isClosed) {\n                \/\/ DirectByteBuffer\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\n                if (buffer instanceof DirectBuffer) {\n                    ((DirectBuffer) buffer).cleaner().clean();\n                }\n                isClosed = true;\n            }\n        }\n    }\n\n    \/\/ try-with-resources\u3092\u4f7f\u7528\u3057\u305f\u5b89\u5168\u306a\u30ea\u30bd\u30fc\u30b9\u64cd\u4f5c\n    public void processData(byte[] data) {\n        try (ManagedResource resource = new ManagedResource(1024)) {\n            resource.writeData(data);\n            \/\/ \u30ea\u30bd\u30fc\u30b9\u306f\u81ea\u52d5\u7684\u306b\u30af\u30ed\u30fc\u30ba\u3055\u308c\u308b\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-118\">\n<h3 class=\"wp-block-heading\" id=\"i-36\">4.3 \u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u8a2d\u8a08\u306e\u5b9f\u88c5\u4f8b<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-119\">\n<p>\u52b9\u7387\u7684\u3067\u5b89\u5168\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u5b9f\u88c5\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class SmartCache&lt;K, V&gt; {\n    private final int maxSize;\n    private final long expirationMillis;\n    private final Map&lt;K, CacheEntry&lt;V&gt;&gt; cache;\n\n    public SmartCache(int maxSize, long expirationSeconds) {\n        this.maxSize = maxSize;\n        this.expirationMillis = expirationSeconds * 1000;\n        this.cache = Collections.synchronizedMap(\n            new LinkedHashMap&lt;K, CacheEntry&lt;V&gt;&gt;(16, 0.75f, true) {\n                @Override\n                protected boolean removeEldestEntry(Map.Entry&lt;K, CacheEntry&lt;V&gt;&gt; eldest) {\n                    return size() &gt; maxSize;\n                }\n            }\n        );\n    }\n\n    private static class CacheEntry&lt;V&gt; {\n        private final V value;\n        private final long expirationTime;\n\n        CacheEntry(V value, long expirationTime) {\n            this.value = value;\n            this.expirationTime = expirationTime;\n        }\n\n        boolean isExpired() {\n            return System.currentTimeMillis() &gt; expirationTime;\n        }\n    }\n\n    public void put(K key, V value) {\n        long expirationTime = System.currentTimeMillis() + expirationMillis;\n        cache.put(key, new CacheEntry&lt;&gt;(value, expirationTime));\n    }\n\n    public Optional&lt;V&gt; get(K key) {\n        CacheEntry&lt;V&gt; entry = cache.get(key);\n        if (entry != null &amp;&amp; !entry.isExpired()) {\n            return Optional.of(entry.value);\n        } else {\n            cache.remove(key);\n            return Optional.empty();\n        }\n    }\n\n    \/\/ \u5b9a\u671f\u7684\u306a\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u51e6\u7406\n    @Scheduled(fixedRate = 60000) \/\/ Spring Scheduler\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\n    public void cleanup() {\n        cache.entrySet().removeIf(entry -&gt; entry.getValue().isExpired());\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-120\">\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n<\/div>\n\n<div id=\"id-9df9e4ae-9973-4482-863f-4b05bf747bf1\"><div id=\"sgb-css-id-121\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u6a5f\u80fd<\/th><th>\u5b9f\u88c5\u65b9\u91dd<\/th><th>\u5229\u70b9<\/th><\/tr><\/thead><tbody><tr><td>\u30b5\u30a4\u30ba\u5236\u9650<\/td><td>LinkedHashMap\u306eremoveEldestEntry<\/td><td>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u5236\u5fa1<\/td><\/tr><tr><td>\u6709\u52b9\u671f\u9650<\/td><td>\u30a8\u30f3\u30c8\u30ea\u30ec\u30d9\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7<\/td><td>\u30ea\u30bd\u30fc\u30b9\u306e\u81ea\u52d5\u89e3\u653e<\/td><\/tr><tr><td>\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5<\/td><td>Collections.synchronizedMap<\/td><td>\u4e26\u884c\u30a2\u30af\u30bb\u30b9\u306e\u5b89\u5168\u6027<\/td><\/tr><tr><td>\u81ea\u52d5\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7<\/td><td>\u5b9a\u671f\u7684\u306a\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u5b9f\u884c<\/td><td>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u9632\u6b62<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-122\">\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u30ea\u30b9\u30af\u3092\u5927\u5e45\u306b\u4f4e\u6e1b\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b89\u5b9a\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5b9f\u88c5\u6642\u306f\u3001\u4ee5\u4e0b\u306e\u70b9\u306b\u7279\u306b\u6ce8\u610f\u3092\u6255\u3046\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-127\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:#ffb36b;color:#FFF\" class=\"sgb-box-simple__title\">\u5b9f\u88c5\u6642\u306e\u6ce8\u610f\u70b9<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:#ffb36b;background-color:#FFF\">\n<ol class=\"wp-block-list\"><div id=\"sgb-css-id-123\">\n<li>\u30ea\u30bd\u30fc\u30b9\u306e\u78ba\u5b9f\u306a\u89e3\u653e<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-124\">\n<li>\u9069\u5207\u306a\u30b5\u30a4\u30ba\u5236\u9650\u306e\u8a2d\u5b9a<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-125\">\n<li>\u5b9a\u671f\u7684\u306a\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u306e\u5b9f\u88c5<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-126\">\n<li>\u30b9\u30ec\u30c3\u30c9\u30bb\u30fc\u30d5\u306a\u64cd\u4f5c\u306e\u4fdd\u8a3c<\/li>\n<\/div>\n\n\n<li>\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u5fb9\u5e95<\/li>\n<\/ol>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-128\">\n<h2 class=\"wp-block-heading\" id=\"i-37\">\uff15\uff0eSpring Framework\u306b\u304a\u3051\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-129\">\n<p>Spring Framework\u3092\u4f7f\u7528\u3059\u308b\u969b\u306e\u7279\u6709\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u554f\u984c\u3068\u3001\u305d\u306e\u5bfe\u7b56\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-130\">\n<h3 class=\"wp-block-heading\" id=\"i-38\">5.1 Spring\u306eBean\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u7ba1\u7406<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-131\">\n<p>Spring Bean\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u7ba1\u7406\u306f\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u9632\u3050\u4e0a\u3067\u91cd\u8981\u306a\u8981\u7d20\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-132\">\n<h4 class=\"wp-block-heading\" id=\"i-39\">1. \u30b9\u30b3\u30fc\u30d7\u5225\u306eBean\u7ba1\u7406<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Configuration\npublic class BeanScopeConfig {\n    \/\/ \u30b7\u30f3\u30b0\u30eb\u30c8\u30f3\u30b9\u30b3\u30fc\u30d7\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\uff09\n    @Bean\n    @Scope(\"singleton\")\n    public HeavyService heavyService() {\n        return new HeavyService();\n    }\n\n    \/\/ \u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u30b9\u30b3\u30fc\u30d7\uff08\u6bce\u56de\u65b0\u3057\u3044\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\uff09\n    @Bean\n    @Scope(\"prototype\")\n    public DataProcessor dataProcessor() {\n        return new DataProcessor();\n    }\n\n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u30b9\u30b3\u30fc\u30d7\uff08\u9069\u5207\u306a\u7834\u68c4\u304c\u91cd\u8981\uff09\n    @Bean\n    @Scope(value = \"request\", proxyMode = ScopedProxyMode.TARGET_CLASS)\n    public RequestScopedBean requestScopedBean() {\n        return new RequestScopedBean();\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-133\">\n<h4 class=\"wp-block-heading\" id=\"i-40\">2. Bean\u7834\u68c4\u6642\u306e\u9069\u5207\u306a\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Component\npublic class ResourceHeavyBean implements DisposableBean {\n    private final List&lt;byte[]&gt; heavyData = new ArrayList&lt;&gt;();\n\n    @PreDestroy\n    public void cleanup() {\n        heavyData.clear();\n        System.gc(); \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066GC\u3092\u4fc3\u3059\n    }\n\n    @Override\n    public void destroy() {\n        cleanup();\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-134\">\n<h3 class=\"wp-block-heading\" id=\"i-41\">5.2 DI\u30b3\u30f3\u30c6\u30ca\u306b\u304a\u3051\u308b\u5faa\u74b0\u53c2\u7167\u306e\u9632\u6b62<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-135\">\n<p>\u5faa\u74b0\u53c2\u7167\u306f\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u539f\u56e0\u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-136\">\n<h4 class=\"wp-block-heading\" id=\"i-42\">1. \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u306e\u6d3b\u7528<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\npublic class ServiceA {\n    private final ServiceB serviceB;\n\n    \/\/ \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30a4\u30f3\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u3067\u5faa\u74b0\u53c2\u7167\u3092\u691c\u51fa\u53ef\u80fd\n    public ServiceA(ServiceB serviceB) {\n        this.serviceB = serviceB;\n    }\n}\n\n@Service\npublic class ServiceB {\n    private final ServiceA serviceA;\n\n    \/\/ \u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u5faa\u74b0\u53c2\u7167\u304c\u691c\u51fa\u3055\u308c\u308b\n    public ServiceB(ServiceA serviceA) {\n        this.serviceA = serviceA;\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-137\">\n<h4 class=\"wp-block-heading\" id=\"i-43\">2. \u5faa\u74b0\u53c2\u7167\u306e\u89e3\u6c7a\u30d1\u30bf\u30fc\u30f3<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\npublic class ServiceA {\n    \/\/ Lazy\u306b\u3059\u308b\u3053\u3068\u3067Bean\u306e\u521d\u671f\u5316\u6642\u671f\u3092\u5236\u5fa1\n    @Lazy\n    @Autowired\n    private ServiceB serviceB;\n\n    public void processA() {\n        \/\/ ServiceB\u306e\u4f7f\u7528\u6642\u306b\u521d\u671f\u5316\n        serviceB.processB();\n    }\n}\n\n@Service\npublic class ServiceB {\n    \/\/ \u30a4\u30d9\u30f3\u30c8\u99c6\u52d5\u306b\u3088\u308b\u758e\u7d50\u5408\u306a\u8a2d\u8a08\n    private final ApplicationEventPublisher eventPublisher;\n\n    public ServiceB(ApplicationEventPublisher eventPublisher) {\n        this.eventPublisher = eventPublisher;\n    }\n\n    public void processB() {\n        eventPublisher.publishEvent(new ProcessBEvent());\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-138\">\n<h3 class=\"wp-block-heading\" id=\"i-44\">5.3 Spring\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6700\u9069\u306a\u30e1\u30e2\u30ea\u8a2d\u5b9a<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-139\">\n<h4 class=\"wp-block-heading\" id=\"i-45\">1. JVM\u30e1\u30e2\u30ea\u8a2d\u5b9a<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u63a8\u5968\u3055\u308c\u308bJVM\u8a2d\u5b9a\nJAVA_OPTS=\"\\\n    -Xms2g \\\n    -Xmx2g \\\n    -XX:MetaspaceSize=256m \\\n    -XX:MaxMetaspaceSize=512m \\\n    -XX:+UseG1GC \\\n    -XX:+HeapDumpOnOutOfMemoryError \\\n    -XX:HeapDumpPath=\/path\/to\/dumps \\\n    -XX:+PrintGCDetails \\\n    -XX:+PrintGCDateStamps \\\n    -Xloggc:\/path\/to\/gc.log\"<\/pre>\n\n\n<div id=\"sgb-css-id-140\">\n<p>\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n<\/div>\n\n<div id=\"id-72167407-ca5a-4fef-b32b-cf64a8562470\"><div id=\"sgb-css-id-141\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u30d1\u30e9\u30e1\u30fc\u30bf<\/th><th>\u63a8\u5968\u5024<\/th><th>\u76ee\u7684<\/th><\/tr><\/thead><tbody><tr><td>Xms<\/td><td>Xmx\u3068\u540c\u5024<\/td><td>\u30e1\u30e2\u30ea\u306e\u65ad\u7247\u5316\u9632\u6b62<\/td><\/tr><tr><td>MetaspaceSize<\/td><td>256m<\/td><td>\u30af\u30e9\u30b9\u30e1\u30bf\u30c7\u30fc\u30bf\u9818\u57df\u306e\u521d\u671f\u30b5\u30a4\u30ba<\/td><\/tr><tr><td>MaxMetaspaceSize<\/td><td>512m<\/td><td>\u30e1\u30bf\u30b9\u30da\u30fc\u30b9\u6700\u5927\u30b5\u30a4\u30ba<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-142\">\n<h4 class=\"wp-block-heading\" id=\"i-46\">2. Spring Boot\u8a2d\u5b9a<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># application.yml\nspring:\n  jpa:\n    properties:\n      hibernate:\n        jdbc:\n          batch_size: 50\n        order_inserts: true\n        order_updates: true\n        batch_versioned_data: true\n    open-in-view: false\n\n  cache:\n    caffeine:\n      spec: maximumSize=500,expireAfterWrite=30m\n\n  tomcat:\n    max-threads: 200\n    min-spare-threads: 20\n    max-connections: 10000\n    accept-count: 100<\/pre>\n\n\n<div id=\"sgb-css-id-143\">\n<h4 class=\"wp-block-heading\" id=\"i-47\">3. \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u9632\u6b62\u306e\u305f\u3081\u306eSpring\u8a2d\u5b9a\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Configuration\npublic class MemoryOptimizedConfig {\n    @Bean\n    public WebMvcConfigurer webMvcConfigurer() {\n        return new WebMvcConfigurer() {\n            @Override\n            public void addInterceptors(InterceptorRegistry registry) {\n                \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\u30a4\u30f3\u30bf\u30fc\u30bb\u30d7\u30bf\u30fc\n                registry.addInterceptor(new SessionCleanupInterceptor());\n            }\n        };\n    }\n\n    @Bean\n    public CacheManager cacheManager() {\n        CaffeineCacheManager cacheManager = new CaffeineCacheManager();\n        cacheManager.setCaffeine(Caffeine.newBuilder()\n            .maximumSize(500)\n            .expireAfterWrite(Duration.ofMinutes(30))\n            .recordStats());\n        return cacheManager;\n    }\n\n    @Bean\n    public ThreadPoolTaskExecutor taskExecutor() {\n        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();\n        executor.setCorePoolSize(10);\n        executor.setMaxPoolSize(50);\n        executor.setQueueCapacity(100);\n        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());\n        return executor;\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-144\">\n<p>\u30e1\u30e2\u30ea\u6700\u9069\u5316\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-145\">\n<p>\u30001. \u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-146\">\n<p>\u3000\u3000\u25cf \u30bb\u30c3\u30b7\u30e7\u30f3\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-147\">\n<p>\u3000\u3000\u25cf \u4e0d\u8981\u306a\u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u524a\u9664<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-148\">\n<p>\u30002. \u30ad\u30e3\u30c3\u30b7\u30e5\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-149\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30a4\u30ba\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-150\">\n<p>\u3000\u3000\u25cf \u6709\u52b9\u671f\u9650\u306e\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-151\">\n<p>\u3000\u3000\u25cf \u30ad\u30e3\u30c3\u30b7\u30e5\u7d71\u8a08\u306e\u6709\u52b9\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-152\">\n<p>\u30003. \u30b9\u30ec\u30c3\u30c9\u30d7\u30fc\u30eb\u7ba1\u7406<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-153\">\n<p>\u3000\u3000\u25cf \u9069\u5207\u306a\u30d7\u30fc\u30eb\u30b5\u30a4\u30ba\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-154\">\n<p>\u3000\u3000\u25cf \u62d2\u5426\u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a<\/p>\n<\/div>\n\n\n<p>\u3000\u3000\u25cf \u30ad\u30e5\u30fc\u5bb9\u91cf\u306e\u5236\u9650<\/p>\n\n\n<div id=\"sgb-css-id-155\">\n<p>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3068\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001Spring Framework\u306b\u304a\u3051\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u3092\u52b9\u679c\u7684\u306b\u9632\u6b62\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-156\">\n<h2 class=\"wp-block-heading\" id=\"i-48\">\uff16\uff0e\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u884c\u3046\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u4e88\u9632\u7b56<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-157\">\n<p>\u52b9\u679c\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u4e88\u9632\u306b\u306f\u3001\u958b\u767a\u30d7\u30ed\u30bb\u30b9\u5168\u4f53\u3092\u901a\u3058\u305f\u4f53\u7cfb\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-158\">\n<h3 class=\"wp-block-heading\" id=\"i-49\">6.1 \u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u3067\u306e\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-159\">\n<p>\u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u6642\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u89b3\u70b9\u3067\u91cd\u70b9\u7684\u306b\u30c1\u30a7\u30c3\u30af\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-160\">\n<h4 class=\"wp-block-heading\" id=\"i-50\">1. \u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u2713 \u30ea\u30bd\u30fc\u30b9\u306e\u9069\u5207\u306a\u30af\u30ed\u30fc\u30ba\npublic class ResourceManagementExample {\n    \/\/ BAD: \u30ea\u30bd\u30fc\u30b9\u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u306a\u3044\u53ef\u80fd\u6027\n    public void badExample() throws IOException {\n        InputStream is = new FileInputStream(\"data.txt\");\n        \/\/ \u51e6\u7406\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3059\u308b\u3068\u30af\u30ed\u30fc\u30ba\u3055\u308c\u306a\u3044\n        is.read();\n        is.close();\n    }\n\n    \/\/ GOOD: try-with-resources\u306b\u3088\u308b\u78ba\u5b9f\u306a\u30af\u30ed\u30fc\u30ba\n    public void goodExample() throws IOException {\n        try (InputStream is = new FileInputStream(\"data.txt\")) {\n            is.read();\n        }\n    }\n}\n\n\/\/ \u2713 \u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u306e\u4f7f\u7528\u65b9\u6cd5\npublic class CollectionManagementExample {\n    \/\/ BAD: \u7121\u5236\u9650\u306b\u6210\u9577\u3059\u308b\u53ef\u80fd\u6027\n    private static final List&lt;String&gt; dataList = new ArrayList&lt;&gt;();\n\n    \/\/ GOOD: \u30b5\u30a4\u30ba\u5236\u9650\u4ed8\u304d\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\n    private static final Cache&lt;String, String&gt; dataCache = CacheBuilder.newBuilder()\n        .maximumSize(1000)\n        .expireAfterWrite(10, TimeUnit.MINUTES)\n        .build();\n}<\/pre>\n\n\n<div id=\"sgb-css-id-161\">\n<h4 class=\"wp-block-heading\" id=\"i-51\">2. \u30ec\u30d3\u30e5\u30fc\u30c1\u30a7\u30c3\u30af\u30b7\u30fc\u30c8<\/h4>\n<\/div>\n\n<div id=\"id-e8e1db0a-df90-415f-b860-e3c492d8fd72\"><div id=\"sgb-css-id-162\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u30ab\u30c6\u30b4\u30ea<\/th><th>\u30c1\u30a7\u30c3\u30af\u9805\u76ee<\/th><th>\u5177\u4f53\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406<\/td><td>\u30af\u30ed\u30fc\u30ba\u51e6\u7406\u306e\u78ba\u8a8d<\/td><td>\u30b9\u30c8\u30ea\u30fc\u30e0\u3001\u30b3\u30cd\u30af\u30b7\u30e7\u30f3<\/td><\/tr><tr><td>\u30b9\u30ec\u30c3\u30c9\u7ba1\u7406<\/td><td>\u30d7\u30fc\u30eb\u8a2d\u5b9a\u306e\u78ba\u8a8d<\/td><td>\u30b9\u30ec\u30c3\u30c9\u6570\u3001\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8<\/td><\/tr><tr><td>\u30ad\u30e3\u30c3\u30b7\u30e5<\/td><td>\u4e0a\u9650\u8a2d\u5b9a\u306e\u78ba\u8a8d<\/td><td>\u30b5\u30a4\u30ba\u5236\u9650\u3001\u6709\u52b9\u671f\u9650<\/td><\/tr><tr><td>\u9759\u7684\u5909\u6570<\/td><td>\u4f7f\u7528\u7406\u7531\u306e\u78ba\u8a8d<\/td><td>\u5fc5\u8981\u6027\u3001\u30b9\u30b3\u30fc\u30d7<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-163\">\n<h3 class=\"wp-block-heading\" id=\"i-52\">6.2 \u30e6\u30cb\u30c3\u30c8\u30c6\u30b9\u30c8\u3067\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u8a3c<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-164\">\n<h4 class=\"wp-block-heading\" id=\"i-53\">1. \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u691c\u51fa\u30c6\u30b9\u30c8<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class MemoryLeakTest {\n    @Test\n    public void testNoMemoryLeak() {\n        \/\/ \u521d\u671f\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u8a18\u9332\n        long initialMemory = getUsedMemory();\n\n        \/\/ \u30c6\u30b9\u30c8\u5bfe\u8c61\u306e\u51e6\u7406\u3092\u5b9f\u884c\n        for (int i = 0; i &lt; 1000; i++) {\n            processSomeData();\n            System.gc();  \/\/ GC\u3092\u4fc3\u3059\n        }\n\n        \/\/ \u6700\u7d42\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u78ba\u8a8d\n        long finalMemory = getUsedMemory();\n\n        \/\/ \u30e1\u30e2\u30ea\u5897\u52a0\u304c\u95be\u5024\u4ee5\u5185\u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\n        assertTrue(finalMemory - initialMemory &lt; MEMORY_THRESHOLD);\n    }\n\n    private long getUsedMemory() {\n        Runtime rt = Runtime.getRuntime();\n        return rt.totalMemory() - rt.freeMemory();\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-165\">\n<h4 class=\"wp-block-heading\" id=\"i-54\">2. \u8ca0\u8377\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Test\npublic void testResourceCleanupUnderLoad() {\n    ExecutorService executor = Executors.newFixedThreadPool(10);\n    List&lt;Future&lt;?&gt;&gt; futures = new ArrayList&lt;&gt;();\n\n    \/\/ \u8907\u6570\u30b9\u30ec\u30c3\u30c9\u3067\u540c\u6642\u306b\u30ea\u30bd\u30fc\u30b9\u3092\u4f7f\u7528\n    for (int i = 0; i &lt; 100; i++) {\n        futures.add(executor.submit(() -&gt; {\n            try (Resource resource = new Resource()) {\n                resource.process();\n            }\n        }));\n    }\n\n    \/\/ \u5168\u3066\u306e\u30bf\u30b9\u30af\u306e\u5b8c\u4e86\u3092\u5f85\u3064\n    futures.forEach(future -&gt; {\n        try {\n            future.get(1, TimeUnit.MINUTES);\n        } catch (Exception e) {\n            fail(\"Resource cleanup failed\");\n        }\n    });\n}<\/pre>\n\n\n<div id=\"sgb-css-id-166\">\n<h3 class=\"wp-block-heading\" id=\"i-55\">6.3 \u7d99\u7d9a\u7684\u306a\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-167\">\n<h4 class=\"wp-block-heading\" id=\"i-56\">1. \u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u5b9f\u88c5<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Component\npublic class MemoryMonitor {\n    private static final Logger logger = LoggerFactory.getLogger(MemoryMonitor.class);\n\n    @Scheduled(fixedRate = 300000) \/\/ 5\u5206\u3054\u3068\n    public void monitorMemory() {\n        Runtime runtime = Runtime.getRuntime();\n        long totalMemory = runtime.totalMemory();\n        long freeMemory = runtime.freeMemory();\n        long usedMemory = totalMemory - freeMemory;\n\n        \/\/ \u30e1\u30e2\u30ea\u4f7f\u7528\u7387\u3092\u8a08\u7b97\n        double memoryUsagePercent = ((double) usedMemory \/ totalMemory) * 100;\n\n        \/\/ \u8b66\u544a\u30ec\u30d9\u30eb\u306b\u5fdc\u3058\u3066\u30ed\u30b0\u51fa\u529b\n        if (memoryUsagePercent &gt; 90) {\n            logger.error(\"Critical memory usage: {}%\", memoryUsagePercent);\n        } else if (memoryUsagePercent &gt; 80) {\n            logger.warn(\"High memory usage: {}%\", memoryUsagePercent);\n        } else {\n            logger.info(\"Current memory usage: {}%\", memoryUsagePercent);\n        }\n    }\n\n    @Bean\n    public HealthIndicator memoryHealthIndicator() {\n        return () -&gt; {\n            Runtime runtime = Runtime.getRuntime();\n            long usedMemory = runtime.totalMemory() - runtime.freeMemory();\n            double memoryUsagePercent = ((double) usedMemory \/ runtime.totalMemory()) * 100;\n\n            Health.Builder builder = new Health.Builder();\n            if (memoryUsagePercent &gt; 90) {\n                return builder.down()\n                    .withDetail(\"memory_usage_percent\", memoryUsagePercent)\n                    .build();\n            }\n            return builder.up()\n                .withDetail(\"memory_usage_percent\", memoryUsagePercent)\n                .build();\n        };\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-168\">\n<h4 class=\"wp-block-heading\" id=\"i-57\">2. \u30a2\u30e9\u30fc\u30c8\u8a2d\u5b9a<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># alerting-config.yml\nalerts:\n  memory:\n    warning_threshold: 80\n    critical_threshold: 90\n    check_interval: 5m\n    notification:\n      slack:\n        channel: \"#system-alerts\"\n      email:\n        recipients: \"team@example.com\"<\/pre>\n\n\n<div id=\"sgb-css-id-169\">\n<h4 class=\"wp-block-heading\" id=\"i-58\">3. \u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u8a2d\u5b9a<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Grafana\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u8a2d\u5b9a\u4f8b\n{\n  \"panels\": [\n    {\n      \"title\": \"JVM Memory Usage\",\n      \"type\": \"graph\",\n      \"metrics\": [\n        \"jvm_memory_used\",\n        \"jvm_memory_max\"\n      ],\n      \"thresholds\": [\n        {\n          \"value\": 80,\n          \"colorMode\": \"warning\"\n        },\n        {\n          \"value\": 90,\n          \"colorMode\": \"critical\"\n        }\n      ]\n    }\n  ]\n}<\/pre>\n\n\n<div id=\"sgb-css-id-170\">\n<p>\u3053\u308c\u3089\u306e\u4e88\u9632\u7b56\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u65e9\u671f\u767a\u898b\u3068\u9632\u6b62\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-175\">\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ol class=\"wp-block-list\"><div id=\"sgb-css-id-171\">\n<li>\u958b\u767a\u521d\u671f\u304b\u3089\u306e\u30ec\u30d3\u30e5\u30fc\u4f53\u5236\u306e\u78ba\u7acb<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-172\">\n<li>\u81ea\u52d5\u5316\u3055\u308c\u305f\u30c6\u30b9\u30c8\u306e\u5b9f\u88c5<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-173\">\n<li>\u7d99\u7d9a\u7684\u306a\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u306e\u5b9f\u65bd<\/li>\n<\/div>\n\n<div id=\"sgb-css-id-174\">\n<li>\u30a2\u30e9\u30fc\u30c8\u3057\u304d\u3044\u5024\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n<\/div>\n\n\n<li>\u30c8\u30ec\u30f3\u30c9\u5206\u6790\u306b\u3088\u308b\u4e88\u9632\u7684\u5bfe\u5fdc<\/li>\n<\/ol>\n<\/div><\/div>\n<\/div>\n\n<div id=\"sgb-css-id-176\">\n<h2 class=\"wp-block-heading\" id=\"i-59\">\uff17\uff0e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\uff1a\u3088\u304f\u3042\u308b\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u4e8b\u4f8b\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-177\">\n<p>\u5b9f\u969b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u906d\u9047\u3059\u308b\u5178\u578b\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u554f\u984c\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-178\">\n<h3 class=\"wp-block-heading\" id=\"i-60\">7.1 \u5927\u898f\u6a21\u30d0\u30c3\u30c1\u51e6\u7406\u3067\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-179\">\n<p>\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u3092\u6271\u3046\u30d0\u30c3\u30c1\u51e6\u7406\u3067\u306f\u3001\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u304c\u91cd\u5927\u306a\u554f\u984c\u3068\u306a\u308a\u3084\u3059\u3044\u9818\u57df\u3067\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-180\">\n<h4 class=\"wp-block-heading\" id=\"i-61\">1. \u30c1\u30e3\u30f3\u30af\u51e6\u7406\u306b\u3088\u308b\u6700\u9069\u5316<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Service\npublic class OptimizedBatchProcessor {\n    private static final int CHUNK_SIZE = 1000;\n\n    @Autowired\n    private JdbcTemplate jdbcTemplate;\n\n    \/\/ BAD: \u5168\u30c7\u30fc\u30bf\u3092\u4e00\u5ea6\u306b\u30e1\u30e2\u30ea\u306b\u8aad\u307f\u8fbc\u3080\n    public void processBatchBadExample() {\n        List&lt;Data&gt; allData = jdbcTemplate.query(\n            \"SELECT * FROM large_table\",\n            new DataRowMapper()\n        );\n        \/\/ \u30e1\u30e2\u30ea\u3092\u5727\u8feb\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\n        processData(allData);\n    }\n\n    \/\/ GOOD: \u30c1\u30e3\u30f3\u30af\u5358\u4f4d\u3067\u306e\u51e6\u7406\n    public void processBatchGoodExample() {\n        int offset = 0;\n        while (true) {\n            List&lt;Data&gt; chunk = jdbcTemplate.query(\n                \"SELECT * FROM large_table LIMIT ? OFFSET ?\",\n                new Object[]{CHUNK_SIZE, offset},\n                new DataRowMapper()\n            );\n\n            if (chunk.isEmpty()) {\n                break;\n            }\n\n            processDataChunk(chunk);\n            offset += CHUNK_SIZE;\n\n            \/\/ \u660e\u793a\u7684\u306aGC\u8981\u6c42\uff08\u5fc5\u8981\u306a\u5834\u5408\u306e\u307f\uff09\n            if (offset % 10000 == 0) {\n                System.gc();\n            }\n        }\n    }\n\n    \/\/ Spring Batch\u3092\u4f7f\u7528\u3057\u305f\u5b9f\u88c5\n    @Bean\n    public Step chunkStep(\n            ItemReader&lt;Data&gt; reader,\n            ItemProcessor&lt;Data, ProcessedData&gt; processor,\n            ItemWriter&lt;ProcessedData&gt; writer) {\n        return stepBuilderFactory.get(\"chunkStep\")\n            .&lt;Data, ProcessedData&gt;chunk(CHUNK_SIZE)\n            .reader(reader)\n            .processor(processor)\n            .writer(writer)\n            .faultTolerant()\n            .retry(Exception.class)\n            .retryLimit(3)\n            .build();\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-181\">\n<h4 class=\"wp-block-heading\" id=\"i-62\">2. \u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u30c7\u30fc\u30bf\u69cb\u9020<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class MemoryEfficientStructures {\n    \/\/ BAD: \u4e0d\u5fc5\u8981\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210\n    private class InefficientData {\n        private String data;\n        private Integer count;  \/\/ \u30aa\u30fc\u30c8\u30dc\u30af\u30b7\u30f3\u30b0\u306e\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9\n        private List&lt;String&gt; details = new ArrayList&lt;&gt;();  \/\/ \u521d\u671f\u5bb9\u91cf\u672a\u6307\u5b9a\n    }\n\n    \/\/ GOOD: \u30e1\u30e2\u30ea\u52b9\u7387\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\n    private class EfficientData {\n        private String data;\n        private int count;  \/\/ \u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b\u306e\u4f7f\u7528\n        private List&lt;String&gt; details;  \/\/ \u5fc5\u8981\u6642\u306b\u521d\u671f\u5316\n\n        public List&lt;String&gt; getDetails() {\n            if (details == null) {\n                details = new ArrayList&lt;&gt;(16);  \/\/ \u521d\u671f\u5bb9\u91cf\u3092\u6307\u5b9a\n            }\n            return details;\n        }\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-182\">\n<h3 class=\"wp-block-heading\" id=\"i-63\">7.2 Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406\u306e\u6700\u9069\u5316<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-183\">\n<h4 class=\"wp-block-heading\" id=\"i-64\">1. \u30bb\u30c3\u30b7\u30e7\u30f3\u7ba1\u7406\u306e\u6539\u5584<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Configuration\npublic class SessionConfig {\n    @Bean\n    public HttpSessionListener httpSessionListener() {\n        return new HttpSessionListener() {\n            @Override\n            public void sessionCreated(HttpSessionEvent se) {\n                \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u309230\u5206\u306b\u8a2d\u5b9a\n                se.getSession().setMaxInactiveInterval(1800);\n            }\n\n            @Override\n            public void sessionDestroyed(HttpSessionEvent se) {\n                \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u7834\u68c4\u6642\u306e\u30af\u30ea\u30fc\u30f3\u30a2\u30c3\u30d7\n                cleanupSession(se.getSession());\n            }\n        };\n    }\n}\n\n@Component\npublic class SessionCleanupScheduler {\n    @Scheduled(fixedRate = 3600000) \/\/ 1\u6642\u9593\u3054\u3068\n    public void cleanupInactiveSessions() {\n        \/\/ \u671f\u9650\u5207\u308c\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u691c\u51fa\u3068\u524a\u9664\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-184\">\n<h4 class=\"wp-block-heading\" id=\"i-65\">2. \u30bb\u30c3\u30b7\u30e7\u30f3\u30c7\u30fc\u30bf\u306e\u6700\u9069\u5316<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class OptimizedSessionData implements Serializable {\n    private static final long serialVersionUID = 1L;\n\n    \/\/ \u5fc5\u8981\u6700\u5c0f\u9650\u306e\u30c7\u30fc\u30bf\u306e\u307f\u3092\u4fdd\u6301\n    @JsonIgnore \/\/ \u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u5bfe\u8c61\u304b\u3089\u9664\u5916\n    private transient BigObject temporaryData;\n\n    private String userId;\n    private LocalDateTime lastAccess;\n\n    \/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30b5\u30a4\u30ba\u3092\u5236\u9650\u3059\u308b\u305f\u3081\u306e\u30ab\u30b9\u30bf\u30e0\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\n    private void writeObject(ObjectOutputStream out) throws IOException {\n        out.defaultWriteObject();\n        \/\/ \u5927\u304d\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u4fdd\u5b58\u3057\u306a\u3044\n    }\n\n    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {\n        in.defaultReadObject();\n        \/\/ \u5fc5\u8981\u306b\u5fdc\u3058\u3066\u4e00\u6642\u30c7\u30fc\u30bf\u3092\u518d\u69cb\u7bc9\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-185\">\n<h3 class=\"wp-block-heading\" id=\"i-66\">7.3 \u30de\u30a4\u30af\u30ed\u30b5\u30fc\u30d3\u30b9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u306e\u6ce8\u610f\u70b9<\/h3>\n<\/div>\n\n<div id=\"sgb-css-id-186\">\n<h4 class=\"wp-block-heading\" id=\"i-67\">1. \u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u306e\u6700\u9069\u5316<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Configuration\npublic class ResourceConfig {\n    @Bean\n    public RestTemplate restTemplate() {\n        HttpComponentsClientHttpRequestFactory factory = \n            new HttpComponentsClientHttpRequestFactory();\n        factory.setConnectTimeout(5000);\n        factory.setConnectionRequestTimeout(5000);\n\n        PoolingHttpClientConnectionManager cm = \n            new PoolingHttpClientConnectionManager();\n        cm.setMaxTotal(100);\n        cm.setDefaultMaxPerRoute(20);\n\n        CloseableHttpClient httpClient = HttpClients.custom()\n            .setConnectionManager(cm)\n            .evictExpiredConnections()\n            .evictIdleConnections(30, TimeUnit.SECONDS)\n            .build();\n\n        factory.setHttpClient(httpClient);\n\n        return new RestTemplate(factory);\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-187\">\n<h4 class=\"wp-block-heading\" id=\"i-68\">2. \u5206\u6563\u30c8\u30ec\u30fc\u30b7\u30f3\u30b0\u3068\u30e1\u30e2\u30ea\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/h4>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@Configuration\npublic class MonitoringConfig {\n    @Bean\n    public MeterRegistry meterRegistry() {\n        return new SimpleMeterRegistry();\n    }\n\n    @Bean\n    public TimedAspect timedAspect(MeterRegistry registry) {\n        return new TimedAspect(registry);\n    }\n}\n\n@Service\npublic class MonitoredService {\n    private final MeterRegistry meterRegistry;\n\n    @Timed(\"service.operation.time\")\n    public void performOperation() {\n        \/\/ \u51e6\u7406\u306e\u5b9f\u884c\n        meterRegistry.counter(\"service.operation.count\").increment();\n    }\n}<\/pre>\n\n\n<div id=\"sgb-css-id-188\">\n<p>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n<\/div>\n\n<div id=\"id-9226e256-85b9-4e89-87d6-dd5441a3e21a\"><div id=\"sgb-css-id-189\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u554f\u984c\u30d1\u30bf\u30fc\u30f3<\/th><th>\u8a3a\u65ad\u65b9\u6cd5<\/th><th>\u89e3\u6c7a\u30a2\u30d7\u30ed\u30fc\u30c1<\/th><\/tr><\/thead><tbody><tr><td>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af<\/td><td>\u30d2\u30fc\u30d7\u30c0\u30f3\u30d7\u5206\u6790<\/td><td>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u53c2\u7167\u306e\u7279\u5b9a\u3068\u89e3\u653e<\/td><\/tr><tr><td>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u4f4e\u4e0b<\/td><td>\u30d7\u30ed\u30d5\u30a1\u30a4\u30ea\u30f3\u30b0<\/td><td>\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306e\u7279\u5b9a\u3068\u6700\u9069\u5316<\/td><\/tr><tr><td>\u30ea\u30bd\u30fc\u30b9\u67af\u6e07<\/td><td>\u30ea\u30bd\u30fc\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/td><td>\u30d7\u30fc\u30eb\u8a2d\u5b9a\u306e\u8abf\u6574<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/div>\n\n<div id=\"sgb-css-id-190\">\n<p>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u6642\u306e\u91cd\u8981\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-191\">\n<p>\u30001. \u554f\u984c\u306e\u5207\u308a\u5206\u3051<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-192\">\n<p>\u3000\u3000\u25cf \u75c7\u72b6\u306e\u660e\u78ba\u306a\u7279\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-193\">\n<p>\u3000\u3000\u25cf \u5f71\u97ff\u7bc4\u56f2\u306e\u628a\u63e1<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-194\">\n<p>\u3000\u3000\u25cf \u518d\u73fe\u624b\u9806\u306e\u78ba\u7acb<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-195\">\n<p>\u30002. \u539f\u56e0\u306e\u7279\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-196\">\n<p>\u3000\u3000\u25cf \u30ed\u30b0\u5206\u6790<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-197\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u30c0\u30f3\u30d7\u306e\u53d6\u5f97<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-198\">\n<p>\u3000\u3000\u25cf \u30b9\u30ec\u30c3\u30c9\u30c0\u30f3\u30d7\u306e\u5206\u6790<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-199\">\n<p>\u30003. \u89e3\u6c7a\u7b56\u306e\u5b9f\u88c5<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-200\">\n<p>\u3000\u3000\u25cf \u30d1\u30c3\u30c1\u306e\u9069\u7528<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-201\">\n<p>\u3000\u3000\u25cf \u8a2d\u5b9a\u306e\u8abf\u6574<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-202\">\n<p>\u3000\u3000\u25cf \u30b3\u30fc\u30c9\u306e\u4fee\u6b63<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-203\">\n<p>\u3053\u308c\u3089\u306e\u5bfe\u7b56\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u9806\u3092\u9069\u5207\u306b\u5b9f\u65bd\u3059\u308b\u3053\u3068\u3067\u3001\u672c\u756a\u74b0\u5883\u3067\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u554f\u984c\u306b\u52b9\u679c\u7684\u306b\u5bfe\u5fdc\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-204\">\n<h2 class=\"wp-block-heading\" id=\"i-69\">\u307e\u3068\u3081\uff1a\u52b9\u679c\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306e\u5b9f\u73fe\u306b\u5411\u3051\u3066<\/h2>\n<\/div>\n\n<div id=\"sgb-css-id-205\">\n<h4 class=\"wp-block-heading\" id=\"i-70\">\u672c\u8a18\u4e8b\u306e\u30dd\u30a4\u30f3\u30c8\u6574\u7406<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-206\">\n<p>\u30001. <strong>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u57fa\u672c\u7684\u7406\u89e3<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-207\">\n<p>\u3000\u3000\u25cf \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306f\u30ac\u30d9\u30fc\u30b8\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u304c\u3067\u304d\u306a\u3044\u72b6\u614b\u3067\u306e\u4e0d\u8981\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u4fdd\u6301<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-208\">\n<p>\u3000\u3000\u25cf \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u9577\u671f\u7684\u306a\u5b89\u5b9a\u6027\u306b\u91cd\u5927\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u308b<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-209\">\n<p>\u3000\u3000\u25cf \u4e88\u9632\u7684\u306a\u5bfe\u7b56\u3068\u65e9\u671f\u767a\u898b\u304c\u91cd\u8981<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-210\">\n<p>\u30002. <strong><strong>\u4e3b\u8981\u306a\u5bfe\u7b56\u30a2\u30d7\u30ed\u30fc\u30c1<\/strong><\/strong><\/p>\n<\/div>\n\n<div id=\"id-12ea92f4-b64e-4521-9a74-e2ed6a0459bf\">\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u30a2\u30d7\u30ed\u30fc\u30c1<\/th><th>\u5177\u4f53\u7684\u306a\u65bd\u7b56<\/th><th>\u671f\u5f85\u3055\u308c\u308b\u52b9\u679c<\/th><\/tr><\/thead><tbody><tr><td>\u8a2d\u8a08\u6bb5\u968e<\/td><td>\u9069\u5207\u306a\u30ea\u30bd\u30fc\u30b9\u7ba1\u7406\u8a2d\u8a08<br>\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u306e\u898b\u7a4d\u3082\u308a<\/td><td>\u69cb\u9020\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u306e\u4e88\u9632<\/td><\/tr><tr><td>\u5b9f\u88c5\u6bb5\u968e<\/td><td>try-with-resources\u6d3b\u7528<br>WeakReference\u6d3b\u7528<br>\u9069\u5207\u306a\u30b9\u30b3\u30fc\u30d7\u8a2d\u5b9a<\/td><td>\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30ec\u30d9\u30eb\u3067\u306e\u4e88\u9632<\/td><\/tr><tr><td>\u904b\u7528\u6bb5\u968e<\/td><td>\u7d99\u7d9a\u7684\u306a\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<br>\u30a2\u30e9\u30fc\u30c8\u8a2d\u5b9a<br>\u5b9a\u671f\u7684\u306a\u5065\u5168\u6027\u30c1\u30a7\u30c3\u30af<\/td><td>\u65e9\u671f\u767a\u898b\u3068\u8fc5\u901f\u306a\u5bfe\u5fdc<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n<div id=\"sgb-css-id-211\">\n<p>\u30003. <strong><strong><strong>\u5b9f\u8df5\u7684\u306a\u30c4\u30fc\u30eb\u6d3b\u7528<\/strong><\/strong><\/strong><\/p>\n<\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   \/\/ \u30e1\u30e2\u30ea\u76e3\u8996\u306e\u57fa\u672c\u5b9f\u88c5\u4f8b\n   public class MemoryMonitor {\n       private static final Logger logger = LoggerFactory.getLogger(MemoryMonitor.class);\n\n       @Scheduled(fixedRate = 300000) \/\/ 5\u5206\u3054\u3068\n       public void checkMemoryHealth() {\n           Runtime runtime = Runtime.getRuntime();\n           long usedMemory = runtime.totalMemory() - runtime.freeMemory();\n           long maxMemory = runtime.maxMemory();\n\n           double memoryUsagePercent = (usedMemory * 100.0) \/ maxMemory;\n\n           logger.info(String.format(\n               \"Memory Usage: %.2f%% (Used: %d MB, Max: %d MB)\",\n               memoryUsagePercent,\n               usedMemory \/ (1024 * 1024),\n               maxMemory \/ (1024 * 1024)\n           ));\n       }\n   }<\/pre>\n\n\n<div id=\"sgb-css-id-212\">\n<h4 class=\"wp-block-heading\" id=\"i-71\">\u4eca\u5f8c\u306e\u5c55\u671b<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-213\">\n<p>\u30001. <strong>\u65b0\u3057\u3044\u6280\u8853\u52d5\u5411<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-214\">\n<p>\u3000\u3000\u25cf Java 21\u4ee5\u964d\u3067\u306e\u6539\u5584\u3055\u308c\u305fGC\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-215\">\n<p>\u3000\u3000\u25cf \u30b3\u30f3\u30c6\u30ca\u74b0\u5883\u3067\u306e\u30e1\u30e2\u30ea\u7ba1\u7406\u6700\u9069\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-216\">\n<p>\u3000\u3000\u25cf \u30af\u30e9\u30a6\u30c9\u30cd\u30a4\u30c6\u30a3\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u76e3\u8996\u5f37\u5316<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-217\">\n<p>\u30002. <strong>\u63a8\u5968\u3055\u308c\u308b\u53d6\u308a\u7d44\u307f<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-218\">\n<p>\u3000\u3000\u25cf \u30c1\u30fc\u30e0\u5168\u4f53\u3067\u306e\u30e1\u30e2\u30ea\u7ba1\u7406\u77e5\u8b58\u306e\u5411\u4e0a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-219\">\n<p>\u3000\u3000\u25cf CI\/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3078\u306e\u30e1\u30e2\u30ea\u30c1\u30a7\u30c3\u30af\u7d44\u307f\u8fbc\u307f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-220\">\n<p>\u3000\u3000\u25cf \u5b9a\u671f\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c6\u30b9\u30c8\u306e\u5b9f\u65bd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-221\">\n<p>\u30003. <strong>\u6b21\u306e\u30b9\u30c6\u30c3\u30d7<\/strong><\/p>\n<\/div>\n\n<div id=\"sgb-css-id-222\">\n<p>\u3000\u3000\u25cf \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u56fa\u6709\u306e\u30e1\u30e2\u30ea\u4f7f\u7528\u30d1\u30bf\u30fc\u30f3\u5206\u6790<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-223\">\n<p>\u3000\u3000\u25cf \u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3055\u308c\u305f\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u6226\u7565\u306e\u7b56\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-224\">\n<p>\u3000\u3000\u25cf \u30c1\u30fc\u30e0\u5185\u3067\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u5171\u6709<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-225\">\n<h4 class=\"wp-block-heading\" id=\"i-72\">\u5b9f\u8df5\u306e\u305f\u3081\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-226\">\n<p>\u3000\u25cf \u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306e\u57fa\u672c\u65b9\u91dd\u7b56\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-227\">\n<p>\u3000\u25cf \u76e3\u8996\u30c4\u30fc\u30eb\u306e\u5c0e\u5165\u3068\u8a2d\u5b9a<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-228\">\n<p>\u3000\u25cf \u30c1\u30fc\u30e0\u5185\u3067\u306e\u77e5\u8b58\u5171\u6709\u30bb\u30c3\u30b7\u30e7\u30f3\u5b9f\u65bd<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-229\">\n<p>\u3000\u25cf \u30b3\u30fc\u30c9\u30ec\u30d3\u30e5\u30fc\u57fa\u6e96\u3078\u306e\u7d44\u307f\u8fbc\u307f<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-230\">\n<p>\u3000\u25cf \u5b9a\u671f\u7684\u306a\u30e1\u30e2\u30ea\u4f7f\u7528\u72b6\u6cc1\u30ec\u30dd\u30fc\u30c8\u306e\u4f5c\u6210<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-231\">\n<p>\u3000\u25cf \u30a4\u30f3\u30b7\u30c7\u30f3\u30c8\u5bfe\u5fdc\u624b\u9806\u306e\u6574\u5099<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-232\">\n<h4 class=\"wp-block-heading\" id=\"i-73\">\u304a\u308f\u308a\u306b<\/h4>\n<\/div>\n\n<div id=\"sgb-css-id-233\">\n<p>\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306f\u3001\u5358\u306a\u308b\u6280\u8853\u7684\u306a\u8ab2\u984c\u89e3\u6c7a\u3060\u3051\u3067\u306f\u306a\u304f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u54c1\u8cea\u3068\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u306b\u76f4\u7d50\u3059\u308b\u91cd\u8981\u306a\u53d6\u308a\u7d44\u307f\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u7d39\u4ecb\u3057\u305f\u624b\u6cd5\u3084\u30c4\u30fc\u30eb\u3092\u6d3b\u7528\u3057\u3001\u7d99\u7d9a\u7684\u306a\u6539\u5584\u3092\u9032\u3081\u3066\u3044\u304f\u3053\u3068\u3067\u3001\u3088\u308a\u5b89\u5b9a\u3057\u305fJava\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u904b\u7528\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<\/div>\n\n<div id=\"sgb-css-id-234\">\n<p>\u65e5\u3005\u9032\u5316\u3059\u308bJava\u74b0\u5883\u306b\u304a\u3044\u3066\u3001\u30e1\u30e2\u30ea\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3082\u9032\u5316\u3057\u7d9a\u3051\u3066\u3044\u307e\u3059\u3002\u5b9a\u671f\u7684\u306a\u77e5\u8b58\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3068\u3001\u5b9f\u8df5\u3067\u306e\u691c\u8a3c\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u52b9\u679c\u7684\u306a\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u3092\u5b9f\u73fe\u3057\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002\u7686\u69d8\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u5bfe\u7b56\u306e\u4e00\u52a9\u3068\u306a\u308c\u3070\u5e78\u3044\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":2952,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,68],"tags":[],"class_list":{"0":"post-649","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-java","8":"category-java-best-practice"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=649"}],"version-history":[{"count":9,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/649\/revisions"}],"predecessor-version":[{"id":2968,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/649\/revisions\/2968"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/media\/2952"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}