{"id":284000,"date":"2017-03-28T11:05:24","date_gmt":"2017-03-28T07:05:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=284000"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=284000","title":{"rendered":"\u0412\u0441\u0451, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0437\u043d\u0430\u0442\u044c \u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430\u0445 \u0438 \u0445\u0438\u043f-\u0434\u0430\u043c\u043f\u0430\u0445. \u0427\u0430\u0441\u0442\u044c 1"},"content":{"rendered":"<p>\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0441 \u043d\u0430\u0448\u0438\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0445\u043e\u0434\u044f\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0432 \u043c\u0435\u043d\u044e \u0441\u043c\u0435\u0441\u044c \u0438\u0437 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u043f\u043e\u0438\u0441\u043a\u0443 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u0440\u044d\u0448\u0435\u0439, \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0449\u0435\u043f\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043d\u0434\u0440\u0435\u044f \u041f\u0430\u043d\u044c\u0433\u0438\u043d\u0430 (\u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0438) \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 JUG&#8217;\u043e\u0432 (\u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u0434\u043e\u043f\u0438\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0441 JPoint 2016). \u0412 \u0431\u0435\u0437 \u0441\u0435\u043c\u0438 \u043c\u0438\u043d\u0443\u0442 \u0434\u0432\u0443\u0445\u0447\u0430\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0410\u043d\u0434\u0440\u0435\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430\u0445 \u0438 \u0445\u0438\u043f-\u0434\u0430\u043c\u043f\u0430\u0445.<\/p>\n<p>  \u041f\u043e\u0441\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u043b\u0438 \u0435\u0433\u043e \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b\u0439\u0434\u0435\u0442 \u0432\u0442\u043e\u0440\u0430\u044f.<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/0pyZERLBZvQ?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b \u0438 \u0445\u0438\u043f-\u0434\u0430\u043c\u043f\u044b \u2014 \u0442\u0435\u043c\u0443, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043a\u0430\u0436\u0434\u043e\u043c\u0443, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 (\u044f \u0434\u0430\u0436\u0435 \u0431\u0430\u0433\u0443 \u043d\u0430\u0448\u0435\u043b \u0432 JVM, \u043f\u043e\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u0438\u043b \u044d\u0442\u0443 \u0442\u0435\u043c\u0443).<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0434\u0435\u043b\u0430\u043b \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0432 \u043e\u0444\u0438\u0441\u0435, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u0433 \u0441\u043f\u0440\u043e\u0441\u0438\u043b: \u00ab\u0412\u0441\u0435 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e?\u00bb \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u043b\u0430\u0439\u0434\u043e\u043c \u0432 \u0441\u0432\u043e\u044e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043f\u043e \u0442\u0435\u043c\u0435 \u043d\u0430 StackOverflow. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e.<br \/>  <a name=\"habracut\"><\/a><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0da\/f23\/8b8\/0daf238b834797ff3a37bc9c73a8a36b.png\"\/><\/p>\n<p>  \u0421\u0430\u043c \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0432 \u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0430\u0445. \u0418 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c\u0438 Java \u2014 \u0442\u044e\u043d\u0438\u0442\u044c \u0435\u0435, \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u0430\u0433\u0438, \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b (\u043f\u043e\u0440\u043e\u0439 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043b\u0435\u0433\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438). \u041e\u0442\u0442\u0443\u0434\u0430 \u044f \u0438 \u043f\u043e\u0447\u0435\u0440\u043f\u043d\u0443\u043b \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0442\u0435\u043b \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 \u044d\u0442\u043e\u043c \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433 \u043c\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043e\u043f\u044b\u0442: \u044f 6 \u043b\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 Sun Microsystems, \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 Java-\u043c\u0430\u0448\u0438\u043d\u044b. \u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044f \u0437\u043d\u0430\u044e \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043a\u0430\u043a \u0438\u0437\u043d\u0443\u0442\u0440\u0438 JVM, \u0442\u0430\u043a \u0438 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<h2>\u0421\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b <\/h2>\n<p>  <\/p>\n<h4>\u0421\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b exception<\/h4>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a55\/412\/c74\/a55412c74e84bcf962b0ea50aabf9349.png\"\/><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0438\u0448\u0435\u0442 \u0441\u0432\u043e\u0439 \u00abHello world!\u00bb, \u0443 \u043d\u0435\u0433\u043e \u0432\u044b\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u0438 \u0435\u043c\u0443 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430\u0445 \u0435\u0441\u0442\u044c \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c.<br \/>  \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 100 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0440\u0430\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u043e\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437 10 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0438\u043f\u0430 long \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<pre><code class=\"java\">package demo1;  import java.util.concurrent.ThreadLocalRandom;  public class ProbabilityExperiment {   \u00a0\u00a0\u00a0private static boolean isSorted(long[] array) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for (int i = 0; i &lt; array.length; i++) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (array[i] &gt; array[i + 1]) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return false;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public void run(int experiments, int length) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int sorted = 0;   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for (int i = 0; i &lt; experiments; i++) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0long[] array = ThreadLocalRandom.current().longs(length).toArray();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (isSorted(array)) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sorted++;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch (Exception e) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0e.printStackTrace();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.printf(&quot;%d of %d arrays are sorted\\n&quot;, sorted, experiments);  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public static void main(String[] args) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0new ProbabilityExperiment().run(100_000_000, 10);  \u00a0\u00a0\u00a0} }<\/code><\/pre>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438 \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u043d\u0430 1\/n!..<br \/>  \u041a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0435 \u043e\u0448\u0438\u0431\u043b\u0438\u0441\u044c \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043a\u0443:<\/p>\n<p>  <code>for (int i=0; i&lt;array.length; i++)<\/code><\/p>\n<p>  \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442? \u042d\u043a\u0441\u0435\u043f\u0448\u043d, \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430.<br \/>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0432 \u0447\u0435\u043c \u0434\u0435\u043b\u043e. \u0423 \u043d\u0430\u0441 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f:<\/p>\n<p>  <code>java.lang.ArrayIndexOutOfBoundsException<\/code><\/p>\n<p>  \u043d\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u043e\u0432 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0435\u0442. \u041a\u0443\u0434\u0430 \u0434\u0435\u043b\u0438\u0441\u044c?<\/p>\n<p>  \u0412 HotSpot JVM \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f: \u0443 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0438\u0434\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 JVM \u0438\u0437 \u0433\u043e\u0440\u044f\u0447\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0434 \u0443 \u043d\u0430\u0441 \u0433\u043e\u0440\u044f\u0447\u0438\u0439 \u2014 100 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0440\u0430\u0437 \u0434\u0435\u0440\u0433\u0430\u0435\u0442\u0441\u044f, \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<br \/>  \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0438\u043a\u0430:<\/p>\n<p>  <code>-XX:-OmitStackTraceInFastThrow<\/code><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b \u043d\u0430 \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  \u041f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0435\u044f\u0432\u043d\u044b\u0445 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 JVM: \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0438 \u0442.\u0434.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/2UhbWIToemwYVSEJwixGRMDgHeCJy-oOmscgXnMqruFMbY1SuoJD2UDyemxbVNCEHiBPJX3wt7ijanZItAOqGJk8y5iEVj84f5ASjI1SPA9Qt3Ikyr3q8OCeKsGXVTqE_Fua3EdJ\"\/><\/p>\n<p>  \u0420\u0430\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438, \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u043d\u0430 \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u043d\u0443\u0436\u043d\u0430? \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0443\u0434\u043e\u0431\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b \u0435\u0441\u0442\u044c.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043c\u0435\u0440\u044f\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u00ab\u0441\u0442\u043e\u0438\u0442\u00bb \u0443 \u043d\u0430\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u0430 (\u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0441 \u043a\u0430\u043a\u0438\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c Java-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0432\u0440\u043e\u0434\u0435 date).<\/p>\n<pre><code class=\"java\">@Benchmark public Object date() { \t return new Date(); }  @Benchmark public Object exception() { \t return new Exception(); }<\/code><\/pre>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JMH \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0443 \u0438 \u0438\u0437\u043c\u0435\u0440\u0438\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u0431\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/GzW0KZpdeZ-sfJ5Y4jgPFlRDxri8_LysgvnuI5iYqj7Fgg0zLmYrR2G6Yymark5yaEgzuNWuNHWG6Fy4A_BAmU7-amlhyA3NcIUzjGmydVdq_qCt0lVE-TEJd0mGltT2b72dSadB\"\/><\/p>\n<p>  \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u0432 150 \u0440\u0430\u0437 \u0434\u043e\u0440\u043e\u0436\u0435, \u0447\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442.<br \/>  \u0418 \u0442\u0443\u0442 \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0414\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043d\u043e \u0440\u0430\u0437\u0433\u0430\u0434\u043a\u0430 \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0441\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043a \u0432\u044b\u0437\u043e\u0432\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 fillInStackTrace, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u044d\u0442\u043e\u0433\u043e \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u0430. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430 \u043e\u0442\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/0NAXHkzh5rzPipzSf8VENmQYH-fG7rS2R_AjxY9dW6cCno6AQvLTqI1hmzW_L8cyvFHTESrU9jn5FahCmgUB6fBfJ6dAapdgfZsKYPxZ7DYuHejmMvjxymWVMSWmx4olv3FW6xQG\"\/><\/p>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 VM \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0438 \u0442\u0430\u043c \u0433\u0443\u043b\u044f\u0435\u0442 \u043f\u043e \u0441\u0442\u0435\u043a\u0443, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 \u0444\u0440\u0435\u0439\u043c\u044b.<br \/>  \u041c\u0435\u0442\u043e\u0434 fillInStackTrace \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439, \u043d\u0435 final. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c:<\/p>\n<pre><code class=\"java\">@Benchmark public Object exceprionNoStackTrace() { \t return new Exception() { \t @Override \t public Throwable fillInStackTrace() { \t return this; } }; }<\/code><\/pre>\n<p>  \u0411\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d.<br \/>  \u041e\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/A7DfNHsJoUgQPXxkanCoxnn3iT0ky7K9J-o9OvJdy5WumTcZCNx2AAVQUpWqkpW91xdGS-O5YMOdAizCh5nXiu9pFJ50xNFZflfBYjGAjYtNrcDolxsT-0hfQ9SM0PMx53FYxBvh\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u0430 \u0431\u0435\u0437 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430 \u043e\u0442\u043d\u0438\u043c\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u0431\u0435\u0437 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 Java 7, \u0443 Throwable \u0438 \u0443 Exception \u0435\u0441\u0442\u044c protected-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c writableStackTrace:<\/p>\n<pre><code class=\"java\">protected Exception(String message, Throwable cause, \t boolean enableSuppression, \t boolean &lt;b&gt;writableStackTrace&lt;\/b&gt;) { public class LightException extends Exception {  public LightException(String message, Throwable cause) { \t super(message, cause, true, &lt;b&gt;false&lt;\/b&gt;);\t } }<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0442\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c false, \u0442\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u043c.<\/p>\n<p>  \u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u044b \u0431\u0435\u0437 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u043e\u0432? \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u043a\u0443\u0434\u0430-\u0442\u043e (\u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438\u0437 \u0446\u0438\u043a\u043b\u0430). \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0410 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u0438\u0442 \u0431\u0440\u043e\u0441\u0438\u0442\u044c \u044d\u043a\u0441\u0435\u043f\u0448\u043d? <br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438: \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0438 \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0441\u0442\u0435\u043a\u0430.<\/p>\n<pre><code class=\"java\">@Param(&quot;&quot;1&quot;, &quot;2&quot;, &quot;10&quot;, &quot;100&quot;, &quot;1000&quot;}) int depth;  @Benchmark public Object throwCatch() { \t try { \t return recursive(depth); \t } catch (Exception e) { \t return e; \t } }<\/code><\/pre>\n<p>  \u0412\u043e\u0442, \u0447\u0442\u043e \u0434\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/qFnz1uhWNJwGc2xFiZY0X01SZxW2cD3GkeFaKBIMnjJb6L--8z7MqdBXczlzs8MuvlNIjbSNG3BByyZYpfszb0fhLOsoqvtEmGn-Q1q-QKlK14G4K2vfImgogXiHKDdRjgU-HhIj\"\/><\/p>\n<p>  \u0422.\u0435. \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f (\u044d\u043a\u0441\u0435\u043f\u0448\u043d \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0440\u0435\u0439\u043c\u0435 \u0438\u043b\u0438 \u0444\u0440\u0435\u0439\u043c\u043e\u043c \u0432\u044b\u0448\u0435 \u2014 \u0433\u043b\u0443\u0431\u0438\u043d\u0430 0 \u0438\u043b\u0438 1), \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442. \u041d\u043e \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0441\u0442\u0435\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0442\u043a\u0430\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c: \u00ab\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u00bb \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0447\u0442\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0441\u0442\u0435\u043a\u0430.<br \/>  \u0414\u043e\u0440\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430, \u043d\u043e \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u2014 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u043a\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e \u0441\u0435\u0442\u0438, \u0437\u0430\u043f\u0438\u0441\u044c, \u2014 \u0432\u0441\u0435, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 getStackTrace, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u044b Java.<\/p>\n<pre><code class=\"java\">@Benchmark public Object fillInStackTrace() { \t return new Exception(); } @Benchmark public Object getStackTrace() { \t return new Exception().getStackTrace(); }<\/code><\/pre>\n<p>  \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430 \u0432 10 \u0440\u0430\u0437 \u00ab\u0434\u043e\u0440\u043e\u0436\u0435\u00bb \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/1COpUiMParmrpxuevT6J8X_zgW7ms3b_naJEghmc42ixrf1cePPWimPrgz0ovECB1PdTGPfcKQ3AKdm9dE405fYmwKxQcjxn__C0KnME-5ZVJ-WO-RngRPG3ZlWczDG9ABtuDSHl\"\/><\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<br \/>  \u0412\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 getStackTrace \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 JDK:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/zpsVmLmMHQhqR5sVXPlC9b8uND2xZu4A62bXwkIVoyxFKqM1c8fzl6kulmu044zD45ZaTSVZ0Bex74Ah1wOySMQNHGK-CwlcgtCJ3KbNU8gIKWL3Zenr84i1lIboQFjG7Mkuv8N5\"\/><\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0441\u0442\u0435\u043a\u0430, \u043f\u043e\u0442\u043e\u043c \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u043e \u044d\u0442\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0444\u0440\u0435\u0439\u043c \u0438 \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 StackTraceElement (\u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Java \u0441 \u043a\u0443\u0447\u0435\u0439 \u043f\u043e\u043b\u0435\u0439). \u041c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u043e\u043b\u0433\u043e, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043e\u0442\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438.<br \/>  \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 Java 9 \u044d\u0442\u043e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 (\u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438) \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0444\u0440\u0435\u0439\u043c\u0443 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043c\u0435\u0442\u043a\u0430 \u043e \u0442\u043e\u043c, \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043e\u043d \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/IdgBieV1bDxJjujSotW1zUkJdxeZp9F8MgQfdI8eYLqonOf2R8x3UubA96AFwh-10-xg3dH1wYAUafsjLNBrPrfvNWYMPryfTDhvBM5jHBPmdjoD4zAui6pJUzykx_hfZC43pxEw\"\/><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u0430\u0440\u0441\u0438\u0442 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0433\u043e. \u0413\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c \u043a \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u0430\u043c \u0432 Java 9 \u2014 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0435\u0449\u0435 \u0438 \u043c\u043e\u0434\u0443\u043b\u0438.<\/p>\n<h5>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0432\u0435\u0434\u0435\u043c \u0438\u0442\u043e\u0433\u0438<\/h5>\n<ul>\n<li>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u2014 \u0434\u0435\u0448\u0435\u0432\u043e\u0435;\n<\/li>\n<li>\u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430;\n<\/li>\n<li>\u0435\u0449\u0435 \u0434\u043e\u0440\u043e\u0436\u0435 \u2014 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430 \u0432 Java-\u043e\u0431\u044a\u0435\u043a\u0442 \u0432 StackTraceElement. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430 \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u0441\u0442\u0435\u043a\u0430.\n<\/li>\n<li>\u0431\u0440\u043e\u0441\u0430\u043d\u0438\u0435 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u2014 \u0431\u044b\u0441\u0442\u0440\u043e\u0435, \u043e\u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 (\u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434),\n<\/li>\n<li>\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0440\u0435\u0439\u043c\u0435. \u0422\u0443\u0442 \u043d\u0430\u0434\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0449\u0435, \u0447\u0442\u043e JIT \u0443 \u043d\u0430\u0441 \u0443\u043c\u0435\u0435\u0442 \u0438\u043d\u043b\u0430\u0439\u043d\u0438\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0434\u0438\u043d \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c \u043c\u043e\u0436\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e Java-\u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0437\u0430\u0438\u043d\u043b\u0430\u0439\u043d\u0438\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430. \u041d\u043e \u0435\u0441\u043b\u0438 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u0434\u0435-\u0442\u043e \u0433\u043b\u0443\u0431\u0436\u0435 \u043f\u043e \u0441\u0442\u0435\u043a\u0443, \u0435\u0433\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0432\u0438\u0437\u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u0441\u0442\u0435\u043a\u0430.  <\/li>\n<\/ul>\n<p>  <\/p>\n<h5>\u041f\u0430\u0440\u0430 \u0441\u043e\u0432\u0435\u0442\u043e\u0432:<\/h5>\n<p>  <\/p>\n<ul>\n<li>\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0435:<br \/>  <code>-XX:-OmitStackTraceInFastThrow<\/code>  <\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li>\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u044b \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b; \u044d\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439;\n<\/li>\n<li>\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u0435\u0442\u0435 \u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u043f\u043e\u0441\u043e\u0431\u0443, \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u044c\u0442\u0435\u0441\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u044d\u043a\u0441\u0435\u043f\u0448\u0435\u043d\u044b \u0431\u044b\u043b\u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b.  <\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u0421\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b \u0432 \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u0430\u0445<\/h4>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0437\u044f\u0442\u044c \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 jstack.<\/p>\n<p>  \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0432\u044b\u0432\u043e\u0434\u0430 \u044d\u0442\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/WQ9Ml1e9e15m-ROM2SXcmJm-ZOFEa2Np8ZvAqOY66FmDNt2Ih4oROgZCbAa3jl-KcyW0tuLTYaSynXK-xM5Jfd3TyPxGoIOjw1e4wEGUrk_kAbwO4gH4xNntmlGcycB8Bur1j7QZ\"\/><\/p>\n<p>  \u0427\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e? \u041a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438, \u0432 \u043a\u0430\u043a\u043e\u043c \u043e\u043d\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0438 \u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0442\u0435\u043a. <br \/>  \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043b\u043e\u043a\u0438, \u043e\u0436\u0438\u0434\u0430\u044e\u0442 \u0432\u0445\u043e\u0434\u0430 \u0432 synchronized-\u0441\u0435\u043a\u0446\u0438\u044e \u0438\u043b\u0438 \u0432\u0437\u044f\u0442\u0438\u044f ReentrantLock, \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u043e \u0432 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0435.<\/p>\n<p>  \u041f\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u043b\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/H894tpZ6quZYptgRCel3FAH-33-b1RsmNyunuqQsRlT-VjaaYlvM6FOzVnK8aAZ6zBGkUjnJqjvv8XYFvOnwJYYspqzwbsNWRCCNgi0bShO1YnlzTvD--OUBKTCRXZWmLOsnqjoR\"\/><\/p>\n<p>  \u041e\u043d \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0432\u044f\u0437\u0430\u043d \u0441 ID \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 top \u0432 Linux, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0434\u044b \u0443 \u0432\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0435\u0434\u044f\u0442 CPU, pid \u043f\u043e\u0442\u043e\u043a\u0430 \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 nid, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u0435. \u041c\u043e\u0436\u043d\u043e \u0442\u0443\u0442 \u0436\u0435 \u043d\u0430\u0439\u0442\u0438, \u043a\u0430\u043a\u043e\u043c\u0443 Java-\u043f\u043e\u0442\u043e\u043a\u0443 \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u043c\u0438 (\u0441 synchronized-\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438) \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a\u043e\u0439 \u0442\u0440\u0435\u0434 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u044b \u0434\u0435\u0440\u0436\u0438\u0442, \u043a\u0442\u043e \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0445 \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c.<br \/>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 ReentrantLock \u044d\u0442\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435 \u0442\u0430\u043a. \u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a Thread 1 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u043a\u0438\u0439 ReentrantLock, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u0438\u0434\u043d\u043e, \u043a\u0442\u043e \u044d\u0442\u043e\u0442 \u043b\u043e\u043a \u0434\u0435\u0440\u0436\u0438\u0442. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432 VM \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u044f:<\/p>\n<p>  <code>-XX:+PrintConcurrentLocks<\/code><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 PrintConcurrentLocks, \u0432 \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u0435 \u0443\u0432\u0438\u0434\u0438\u043c \u0438 ReentrantLock.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/qIqPjW8rXhnK1FPx9zyw41-mbWCpXBtXSQTDwkDmUKi9zLuoGPyJiPhsfq4ExctmgrqVbKGd5f7eQqGKeeBDS9ezl-GRSggZE4RbAT9GLHyn6kO6w6VPu9Hu6UzzdMlzVvd8xNbR\"\/><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 id \u043b\u043e\u043a\u0430. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0433\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b Thread 2.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043e\u043f\u0446\u0438\u044f \u0442\u0430\u043a\u0430\u044f \u0445\u043e\u0440\u043e\u0448\u0430\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0435\u0435 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u00bb?<br \/>  \u041e\u043d\u0430 \u0442\u043e\u0436\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u0441\u0442\u043e\u0438\u0442. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0430\u043a\u0438\u0435 ReentrantLock\u2019\u0438 \u0434\u0435\u0440\u0436\u0438\u0442, JVM \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u0442 \u0432\u0435\u0441\u044c Java heap, \u0438\u0449\u0435\u0442 \u0442\u0430\u043c \u0432\u0441\u0435 ReentrantLock\u2019\u0438, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0441 \u0442\u0440\u0435\u0434\u0430\u043c\u0438 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (\u0443 \u0442\u0440\u0435\u0434\u0430 \u043d\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u043b\u043e\u043a\u0438 \u043e\u043d \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b; \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u2014 \u043a\u0430\u043a\u043e\u0439 \u043b\u043e\u043a \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043a\u0430\u043a\u0438\u043c \u0442\u0440\u0435\u0434\u043e\u043c).<\/p>\n<p>  \u0412 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 (Thread 1 \/ Thread 2) \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a \u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f. \u041c\u043e\u0439 \u0441\u043e\u0432\u0435\u0442 \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438: \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043a\u043b\u0438\u0435\u043d\u0442 \u0445\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0442\u0440\u0435\u0434\u0443 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0438\u043c\u044f (\u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0438\u0436\u0435 \u2014 \u043f\u0440\u044f\u043c\u043e IP \u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u0434\u0435\u0442). \u0418 \u0442\u043e\u0433\u0434\u0430 \u0432 \u0434\u0430\u043c\u043f\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u0440\u0430\u0437\u0443 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e, \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043e\u043d \u0441\u0435\u0439\u0447\u0430\u0441 \u0436\u0434\u0435\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/xfgwD71RVPfbI0bgWRPKax7qNRNDRj8AlPV_cE51B1fpSDxNlXOg7SZDvxOxMiG3QWp96sQV6ekxSTDMtRZMYkGv3vM40bpzbHvFDBPQMzjXPL-S5nSnQfabMSha2w81XZNPYPrX\"\/><\/p>\n<p>  \u0425\u0432\u0430\u0442\u0438\u0442 \u0442\u0435\u043e\u0440\u0438\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u044f\u0442\u044c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b.<\/p>\n<pre><code class=\"java\">package demo2;  import java.util.stream.IntStream;  public class ParallelSum {  \u00a0\u00a0\u00a0static int SUM = IntStream.range(0, 100).parallel().reduce(0, (x, y) -&gt; x + y);   \u00a0\u00a0\u00a0public static void main(String[] args) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(SUM);  \u00a0\u00a0\u00a0} }<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443 3 \u0440\u0430\u0437\u0430 \u043f\u043e\u0434\u0440\u044f\u0434. 2 \u0440\u0430\u0437\u0430 \u043e\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0443\u043c\u043c\u0443 \u0447\u0438\u0441\u0435\u043b \u043e\u0442 0 \u0434\u043e 100 (\u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044f 100), \u0442\u0440\u0435\u0442\u0438\u0439 \u2014 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u044b:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/gzVCunYyWrjY7s_9IkFdhn-71Ay-ZqPSedNtDz1Zs6dW73pCL7VE7fO588IpGD-cAd5EVcgzEf9l7uEzwAMhkUGgWiXOXmP_u7XW_Y1wc94r5994Mv825hKBt2yRojo3YWD6IVA6\"\/><\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f runnable, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043d\u0430\u0448 reduce. \u041d\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442: Thread.State \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a runnable, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a in Object.wait().<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/ZpJP_D36-lwVkU1d9MljJeMESYSjaxWuVC130F6E2xuqAVz_LiWtrNkrnIksVytuWeBIrHL-F1L7_nuTMheromZ4FVlaKEnRxiJsptr1wezYYWWr4AgaenaHfmiOUd3kCwA3Rc4G\"\/><\/p>\n<p>  \u041c\u043d\u0435 \u0442\u043e\u0436\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u042f \u0434\u0430\u0436\u0435 \u0445\u043e\u0442\u0435\u043b \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u0431\u0430\u0433\u0435, \u043d\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u0430\u043a\u0430\u044f \u0431\u0430\u0433\u0430 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0430 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u0441 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439: \u00abnot an issue, will not fix\u00bb.<br \/>  \u0412 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u0434\u0435\u0434\u043b\u043e\u043a. \u0415\u0433\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 <a href=\"https:\/\/habrahabr.ru\/company\/odnoklassniki\/blog\/255067\/\">\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/a>.<\/p>\n<p>  \u042d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 ParallelSum:<\/p>\n<pre><code class=\"java\">public class ParallelSum { \t static int SUM = IntStream.range(0, 100).parallel().reduce(0, (x, y) -&gt; x + y);<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0441\u0442\u0440\u0438\u043c \u2014 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 ForkJoinPool, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043b\u043e \u043b\u044f\u043c\u0431\u0434\u044b:<\/p>\n<p>  <code>(x, y) -&gt; x + y<\/code><\/p>\n<p>  \u041a\u043e\u0434 \u043b\u044f\u043c\u0431\u0434\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043d Java-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 ParallelSum \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u0437 ForkJoinPool \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u043b\u0430\u0441\u0441\u0443 ParallelSum, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0436\u0434\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0436\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 \u043e\u043d\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0414\u0435\u0434\u043b\u043e\u043a. <\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0443\u043c\u043c\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c? \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0432\u0435\u0437\u043b\u043e. \u0423 \u043d\u0430\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 (\u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442).<\/p>\n<p>  \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a \u0432 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0435 runnable? \u0415\u0441\u043b\u0438 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a Thread.State, \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a runnable, \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u041d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f blocked, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0442\u043e\u043a \u043d\u0435 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 java-\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0435, \u0442.\u043a. \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 synchronized-\u0441\u0435\u043a\u0446\u0438\u0438, \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f waiting, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 object.wait(). \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d \u0431\u044b\u0442\u044c java-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c. \u0422.\u0435. \u044d\u0442\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0438\u0434\u0438\u043c \u0438\u0437 Java, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437 \u0442\u0440\u0435\u0434 \u0434\u0430\u043c\u043f\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u044c.  <\/p>\n<h4>\u0421\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u043f\u0440\u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<\/h4>\n<p>  \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u0432 \u043a\u0443\u0447\u0435 \u043c\u0435\u0441\u0442 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0447\u0442\u043e-\u0442\u043e \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0411\u044b\u043b\u043e \u0431\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0442\u0430 \u0438\u043b\u0438 \u0438\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/vmhUGT1vni9iBVB5P461AupXBCL61HngL9IF0x2XraHxJYRxE_XwjzhgFbGHF3Jwgl5YojN3zh8THuEiognaK3LLumjssjTwPPpRaRAcc4vWX6cJOarcYMfRhLgsA6kaHdJKKN9l\"\/><\/p>\n<p>  \u0412 Java \u043d\u0435\u0442 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441\u044b __FILE__, __LINE__, \u043a\u0430\u043a \u0432 \u0421 (\u044d\u0442\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0435\u0449\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u0441\u0442\u0440\u043e\u043a\u0443). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043e, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b, \u043d\u0435\u0442. <\/p>\n<pre><code class=\"java\">public static String getLocation() { \t StackTraceElement s = new Exception().getStackTrace()[2]; \t return s.getFileName() + \u2018:\u2019 + s.getLineNumber(); }<\/code><\/pre>\n<p>  \u0413\u0435\u043d\u0435\u0440\u0438\u043c \u044d\u043a\u0441\u0435\u043f\u0448\u043d, \u0443 \u043d\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441, \u0431\u0435\u0440\u0435\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u0440\u0435\u0439\u043c (\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u2014 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 get location, \u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u2014 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 warning).<\/p>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430 \u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0433\u043e \u0432 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u0440\u043e\u0433\u043e. \u0410 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043e\u0434\u0438\u043d \u0444\u0440\u0435\u0439\u043c. \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c (\u0431\u0435\u0437 \u044d\u043a\u0441\u0435\u043f\u0448\u043d)?<\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e getStackTrace \u0443 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 getStackTrace \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Thread.<\/p>\n<p>  <code>Thread.current().getStackTrace()<\/code><\/p>\n<p>  \u0411\u0443\u0434\u0435\u0442 \u043b\u0438 \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u0435\u0435?<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/RQAELLyu8F6o6uIYLjewo3KlCRNaZ8bowv02Vjf5hKlLuGIn_l2W949FTorcLo8CCMJpX38Rqek7fvm05h0EKpzz-RSxb2M-IQAV8LDBZBm6ddYi8H3-F7ftd61qGs2-n9GCAQNx\"\/><\/p>\n<p>  \u041d\u0435\u0442. JVM \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 \u044d\u043a\u0441\u0435\u043f\u0448\u043d \u0441 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u043e\u043c.<\/p>\n<p>  \u041d\u043e \u0445\u0438\u0442\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0435\u0441\u0442\u044c:<\/p>\n<pre><code class=\"java\">public static String getLocation() { \t StackTraceElement s = sun.misc.SharedSecrets.getJavaLangAccess() \t .getStackTraceElement(new Exception(), 2);  \t return s.getFileName() + \u2018:\u2019 + s.getLineNumber(); }<\/code><\/pre>\n<p>  \u042f \u043b\u044e\u0431\u043b\u044e \u0432\u0441\u044f\u043a\u0438\u0435 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u0448\u0442\u0443\u043a\u0438: unsafe, sun.misc, \u00a0SharedSecrets \u0438 \u0442.\u0434.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c StackTraceElement \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0430 (\u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u0432 Java-\u043e\u0431\u044a\u0435\u043a\u0442\u044b). \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u043b\u043e\u0445\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c: \u0432 Java 9 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u0422\u0430\u043c \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0443 \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430\u043c\u0438, \u0438 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0442\u0430\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442.<\/p>\n<p>  \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0434\u0438\u043d \u0444\u0440\u0435\u0439\u043c, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0432 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 Caller-sensitive \u043c\u0435\u0442\u043e\u0434\u0430\u0445 \u2014 \u043c\u0435\u0442\u043e\u0434\u0430\u0445, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0438\u0445 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442. \u0412 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0447\u0430\u0441\u0442\u043e, \u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u0439 JDK \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0435\u043c\u0430\u043b\u043e:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/ail_YHVqgr1UfD3lQQhB9Lt-NY8dgLpPJwvIQgE_E98VXUn6-aIovqKZqLgzOviad5FcPc74SKPhi282WGEVBnntNVr5xMRWWla58vOeRURrIyWYgZ-NngfPIguZCBedDziGz8r-\"\/><\/p>\n<p>  \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 Class.forName, \u043f\u043e\u0438\u0441\u043a \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u043b\u0430\u0441\u0441-\u043b\u043e\u0430\u0434\u0435\u0440\u0435 (\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u0432\u0430\u043b \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434); \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u2014 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c ResourceBundle \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 System.loadLibrary. \u0422\u0430\u043a\u0436\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442, \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043f\u0435\u0440\u043c\u0438\u0441\u0441\u0438\u0438 (\u0430 \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0430\u0432\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434). \u041d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0432 \u00ab\u0441\u0435\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u00bb API \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u043c\u0435\u0442\u043e\u0434 getCallerClass, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f JVM-\u0438\u043d\u0442\u0440\u0438\u043d\u0441\u0438\u043a\u043e\u043c \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442.<\/p>\n<p>  <code>sun.reflect.Reflection.getCallerClass<\/code><\/p>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c, \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 API \u2014 \u044d\u0442\u043e \u0437\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f (\u0441\u0430\u043c\u0438 \u0440\u0438\u0441\u043a\u0443\u0435\u0442\u0435 \u043d\u0430\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0442\u0435\u043c, \u0447\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0437\u0432\u0430\u043b unsafe). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 JDK \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e \u0440\u0430\u0437 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u043d\u0443\u0436\u043d\u0430 \u043b\u0435\u0433\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 \u2014 \u043d\u043e\u0432\u044b\u0439 API \u0434\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u044d\u0442\u043e\u043c\u0443 API:<\/p>\n<ul>\n<li>\u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0444\u0440\u0435\u0439\u043c\u043e\u0432 (\u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u043e\u0432);\n<\/li>\n<li>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0440\u0435\u0439\u043c\u044b (\u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0443 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c);\n<\/li>\n<li>\u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0444\u0440\u0435\u0439\u043c\u044b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0435\u043d\u0438\u0432\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (lazy) \u2014 \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u043e\u043d \u0441\u0432\u044f\u0437\u0430\u043d, \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0435 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f;\n<\/li>\n<li>\u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 getCallerClass \u2014 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 \u0441\u0430\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 java.lang.Class.  <\/li>\n<\/ul>\n<p>  \u0418\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 Java 9 \u0431\u0443\u0434\u0435\u0442 java.lang.StackWalker.<br \/>  \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043c\u0435\u0442\u043e\u0434\u043e\u043c getInstance. \u0423 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u2014 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 StackWalker \u0438\u043b\u0438 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u043f\u0446\u0438\u044f\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/YXTuqHR-g3-5WAPiNz_f5XCY41KBcB5nSit8pQxHJSq79pILUUwpxvrQlxCJ8BHD5ocZgolN1c2bTY0_lA3jXWOzL6jrG-1ByYxw1tQiqlgvJ8Q2w0uZXN7jgLm-jzH9jhxDJcpY\"\/><\/p>\n<ul>\n<li>\u043e\u043f\u0446\u0438\u044f RETAIN_CLASS_REFERENCE \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043d\u0435 \u0438\u043c\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b;\n<\/li>\n<li>\u043f\u0440\u043e\u0447\u0438\u0435 \u043e\u043f\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0435 \u0444\u0440\u0435\u0439\u043c\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0440\u0435\u0444\u043b\u0435\u043a\u0448\u043d (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0435).  <\/li>\n<\/ul>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u0443\u044e \u0433\u043b\u0443\u0431\u0438\u043d\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 (\u0447\u0442\u043e\u0431\u044b JVM \u043c\u043e\u0433\u043b\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u0432 batch).<\/p>\n<p>  \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"java\">StackWalker sw = StackWalker.getInstance(); sw.forEach(System.out::println);<\/code><\/pre>\n<p>  \u0411\u0435\u0440\u0435\u043c StackWalker \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 forEach, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043e\u0431\u043e\u0448\u0435\u043b \u0432\u0441\u0435 \u0444\u0440\u0435\u0439\u043c\u044b. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/2lwL6gZ6e3eGQ5LJm-3ERUQRcdlsNFp8mPlqMdP5bsyTkcpHxksOy4OlV4owGn7fRR_TTad6EEsFO0h8g2vnxxNzJo_M7V7HgEQC8LvwKyEdgjcYPzwkvoGYaBWEliE1KG9EJCN3\"\/><\/p>\n<p>  \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 SHOW_RELECT_FRAMES:<\/p>\n<pre><code class=\"java\">StackWalker sw = StackWalker.getInstance(StackWalker.Option.SHOW_RELECT_FRAMES); sw.forEach(System.out::println);<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u0432\u044b\u0437\u043e\u0432\u0443 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0444\u043b\u0435\u043a\u0448\u043d:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/x-79BO51H9m58UIwRcpZQ6qzDZyTrgaZ9T8ga6VvH_FrrxQQExUZsFr9TKbQqDojTigcfI69YCwlAgf8QUwx2FwqfPm377Ix1U6RRvOpgsPaRRKUuZmdn0aehKF3Yi5E0Co6yvUX\"\/><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e SHOW_HIDDEN_FRAMES (\u043e\u043d\u0430, \u043a\u0441\u0442\u0430\u0442\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f SHOW_RELECT_FRAMES, \u0442.\u0435. \u0440\u0435\u0444\u043b\u0435\u043a\u0448\u043d-\u0444\u0440\u0435\u0439\u043c\u044b \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b):<\/p>\n<pre><code class=\"java\">StackWalker sw = StackWalker.getInstance(StackWalker.Option.SHOW_HIDDEN_FRAMES); sw.forEach(System.out::println);<\/code><\/pre>\n<p>  \u0412 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438-\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043b\u044f\u043c\u0431\u0434:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/CY0YrTlPV4IkSsumwysC6piPfWBhn1K2flc4RHEEUPW6AcpggUdlQtEzGxyg8WKqgOO8gw94Eiz2EhudM-0XEC2oAH6ttjDy4_afELq-7zeOE7Pm7KCL4nhOpuY6EKAzQo4Uvudr\"\/><\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u044b\u0439 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u0432 StackWalker API \u2014 \u043c\u0435\u0442\u043e\u0434 walk \u0441 \u0442\u0430\u043a\u043e\u0439 \u0445\u0438\u0442\u0440\u043e\u0439 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u0441 \u043a\u0443\u0447\u0435\u0439 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u043e\u0432:<\/p>\n<pre><code class=\"java\">public &lt;T&gt; T walk(Function&lt;? super Stream&lt;StackFrame&gt;, ? extends T&gt; function)<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 walk \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0442 \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u0430.<\/p>\n<p>  \u0415\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435.<br \/>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u2014 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0438\u043c, \u0430 \u0443\u0436\u0435 \u043d\u0430\u0434 \u0441\u0442\u0440\u0438\u043c\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0432\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0431\u044b \u043c\u0435\u0442\u043e\u0434 getCallerFrame, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u0440\u0435\u0439\u043c: \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0435 2, \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f findFirst:<\/p>\n<pre><code class=\"java\">public static StackFrame getCallerFrame() { \t return StackWalker.getInstance() \t .walk(stream -&gt; stream.skip(2).findFirst()) \t .orElseThrow(NoSuchElementException::new); }<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 walk \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0442\u0440\u0438\u043c\u0430. \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e.<br \/>  \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f (\u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e Caller \u043a\u043b\u0430\u0441\u0441) \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 shortcut \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code class=\"java\">return StackWalker.getInstance(RETAIN_CLASS_REFERENCE).getCallerClass();<\/code><\/pre>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435.<\/p>\n<p>  \u041e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u0444\u0440\u0435\u0439\u043c\u044b, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043f\u0430\u043a\u0435\u0442\u0443 org.apache, \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0435 10 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a.<\/p>\n<pre><code class=\"java\">StackWalker sw = StackWalker.getInstance();  List&lt;StackFrames&gt; frames = sw.walk(stream -&gt; \t stream.filter(sf -&gt; sf.getClassName().startsWith(&quot;org.apache.&quot;)) \t .limit(10) \t .collect(Collectors.toList()));<\/code><\/pre>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a\u0430\u044f \u0434\u043b\u0438\u043d\u043d\u0430\u044f \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0441 \u043a\u0443\u0447\u0435\u0439 \u0434\u0436\u0435\u043d\u0435\u0440\u0438\u043a\u043e\u0432? \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443 StackWalker \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u0438\u043c?<\/p>\n<pre><code class=\"java\">public Stream&lt;StackFrame&gt; stream();<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0434\u0430\u0442\u044c API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u0438\u043c, \u0443 JDK \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0441\u0442\u0440\u0438\u043c\u043e\u043c \u0434\u0435\u043b\u0430\u044e\u0442. \u041c\u043e\u0436\u043d\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u0441\u0442\u0440\u0438\u043c \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u0443\u0434\u0430-\u0442\u043e, \u043e\u0442\u0434\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a, \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 2 \u0447\u0430\u0441\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f (\u0442\u043e\u0442 \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043e\u0431\u043e\u0439\u0442\u0438, \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u043d, \u0430 \u0442\u0440\u0435\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u0432\u043d\u043e \u0443\u0431\u0438\u0442). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u00ab\u043b\u0435\u043d\u0438\u0432\u043e\u0441\u0442\u044c\u00bb Stack Walker API.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u043e\u0438\u043d\u0442 Stack Walker API: \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0438 walk, \u0443 \u0432\u0430\u0441 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0442\u0435\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c lazy.<\/p>\n<p>  \u041d\u0430 \u0434\u0435\u0441\u0435\u0440\u0442 \u0435\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 JDK \u043f\u0440\u044f\u0447\u0443\u0442 \u043e\u0442 \u043d\u0430\u0441 \u043a\u0443\u0447\u0443 \u0441\u043e\u043a\u0440\u043e\u0432\u0438\u0449. \u0418 \u043f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u043e\u0432 \u043e\u043d\u0438 \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0436\u0438\u0432\u044b\u0435 \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043c\u0435\u0442\u043e\u0434\u0435 \u0438 \u043a\u043b\u0430\u0441\u0441\u0435, \u043d\u043e \u0435\u0449\u0435 \u0438 \u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430\u0445 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u044d\u043a\u0441\u043f\u0440\u0435\u0448\u043d-\u0441\u0442\u0435\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u0430.<\/p>\n<pre><code class=\"java\">\/* package-private *\/ interface LiveStackFrame extends StackFrame { \t publicObject[] getMonitors(); \t publicObject[] getLocals(); \t publicObject[] getStack(); \t public static StackWalker getStackWalker(); }<\/code><\/pre>\n<p>  \u0417\u0430\u0449\u0438\u0442\u0430 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0430\u0445\u0442\u0438 \u043a\u0430\u043a\u0430\u044f: \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0435\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c. \u041d\u043e \u043a\u0442\u043e \u0436\u0435 \u043d\u0430\u043c \u043c\u0435\u0448\u0430\u0435\u0442 \u0432\u0437\u044f\u0442\u044c \u0440\u0435\u0444\u043b\u0435\u043a\u0448\u043d \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e? (\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0432 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043a\u0430\u0445 JDK 9 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 API \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0444\u043b\u0435\u043a\u0448\u043d \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d. \u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u044e JVM <code>--add-opens=java.base\/java.lang=ALL-UNNAMED<\/code>) <\/p>\n<p>  \u041f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u0415\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0438\u0449\u0435\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043b\u0430\u0431\u0438\u0440\u0438\u043d\u0442\u0430. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 size x size. \u0415\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 visit \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438. \u041c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e\u0439\u0442\u0438 \u0432\u043b\u0435\u0432\u043e \/ \u0432\u043f\u0440\u0430\u0432\u043e \/ \u0432\u0432\u0435\u0440\u0445 \/ \u0432\u043d\u0438\u0437 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0437\u0430\u043d\u044f\u0442\u044b). \u0415\u0441\u043b\u0438 \u0434\u043e\u0448\u043b\u0438 \u0438\u0437 \u043f\u0440\u0430\u0432\u043e\u0439-\u043d\u0438\u0436\u043d\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u043b\u0435\u0432\u0443\u044e-\u0432\u0435\u0440\u0445\u043d\u044e\u044e, \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0448\u043b\u0438 \u0432\u044b\u0445\u043e\u0434 \u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0435\u043a.<\/p>\n<pre><code class=\"java\">package demo3;  import java.util.Random;  public class Labyrinth {  \u00a0\u00a0\u00a0static final byte FREE = 0;  \u00a0\u00a0\u00a0static final byte OCCUPIED = 1;  \u00a0\u00a0\u00a0static final byte VISITED = 2;   \u00a0\u00a0\u00a0private final byte[][] field;   \u00a0\u00a0\u00a0public Labyrinth(int size) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Random random = new Random(0);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0field = new byte[size][size];   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for (int x = 0; x &lt; size; x++) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for (int y = 0; y &lt; size; y++) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (random.nextInt(10) &gt; 7) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0field[x][y] = OCCUPIED;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0field[0][0] = field[size - 1][size - 1] = FREE;  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public int size() {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return field.length;  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public boolean visit(int x, int y) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (x == 0 && y == 0) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0StackTrace.dump();  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (x &lt; 0 || x &gt;= size() || y &lt; 0 || y &gt;= size() || field[x][y] != FREE) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return false;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0field[x][y] = VISITED;  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return visit(x - 1, y) || visit(x, y - 1) || visit(x + 1, y) || visit(x, y + 1);  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public String toString() {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return &quot;Labyrinth&quot;;  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public static void main(String[] args) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Labyrinth lab = new Labyrinth(10);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0boolean exitFound = lab.visit(9, 9);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(exitFound);  \u00a0\u00a0\u00a0} }<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/L7E49gUvR2mplSXu53hICr34H2U6sW0M5qSyZ20ntRMX9wggNvnmT7OhfTGL4F9nFKug843B9L_po1iRI-_SWa3_XOqqwseRiHSThovj0QYR3EpHycJtkayCjc0_UCgM9bhW8Bpv\"\/><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u044f \u0434\u0435\u043b\u0430\u044e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 dumpStack, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0435\u0449\u0435 \u0432 Java 8, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u2014 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441\u0430\u043c \u0441\u0435\u0431\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442, \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0448\u0430\u0433\u0435 (\u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442) \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. <br \/>  \u0417\u0430\u043c\u0435\u043d\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 dumpStack \u043d\u0430 \u043d\u0430\u0448 StackTrace.dump:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/5yVUzpfhXMMQ4a8bQyH2RF-x1y0CdzX49QWnyh5cGBL-QXbh46aZtrX0dwDcynN214EWpZ-08rCoa0dcUSaRP46z_q-XRGvI4iFEYLmeooZESMCS_r_D6-vaxDhMLli0XwMQqXIZ\"\/><\/p>\n<p>  \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0444\u043b\u0435\u043a\u0448\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 live \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u044b:<\/p>\n<pre><code class=\"java\">package demo3;  import java.lang.reflect.Method; import java.util.Arrays;  public class StackTrace {   \u00a0\u00a0\u00a0private static Object invoke(String methodName, Object instance) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Class&lt;?&gt; liveStackFrame = Class.forName(&quot;java.lang.LiveStackFrame&quot;);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Method m = liveStackFrame.getMethod(methodName);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m.setAccessible(true);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return m.invoke(instance);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch (ReflectiveOperationException e) {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0throw new AssertionError(&quot;Should not happen&quot;, e);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0}   \u00a0\u00a0\u00a0public static void dump() {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0StackWalker sw = (StackWalker) invoke(&quot;getStackWalker&quot;, null);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sw.forEach(frame -&gt; {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Object[] locals = (Object[]) invoke(&quot;getLocals&quot;, frame);  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(&quot; at &quot; + frame + &quot; \u00a0&quot; + Arrays.toString(locals));  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});  \u00a0\u00a0\u00a0} }<\/code><\/pre>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 StackWalker, \u0432\u044b\u0437\u0432\u0430\u0432 \u043c\u0435\u0442\u043e\u0434 getStackWalker. \u0412\u0441\u0435 \u0444\u0440\u0435\u0439\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 getStackWalker, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0431\u0443\u0434\u0443\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u043c\u0438 \u043b\u0430\u0439\u0432 \u0441\u0442\u0435\u043a-\u0444\u0440\u0435\u0439\u043c\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, getLocals \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0443 \u043d\u0430\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u0438\u0437 \u043b\u0430\u0431\u0438\u0440\u0438\u043d\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/U89R8zkn0bAT7IPJYcytHp5SQYxBrXzZC5FxfAMApdLVfHigCLCNiM29PcwP36hwOwOlb9ls7t8rUFL3ZumsPbuypgkASK8apow_S_hX7Cwr7ybC4YOGdwF7_ToUXw2Xz8gmisIM\"\/><\/p>\n<hr\/>\n<p>  <i>\u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u044b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0430.<\/p>\n<p>  \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u0441 \u0410\u043d\u0434\u0440\u0435\u0435\u043c \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u043a\u043e\u0440\u043e \u2014 7-8 \u0430\u043f\u0440\u0435\u043b\u044f \u043d\u0430 <a href=\"https:\/\/jpoint.ru\/\">JPoint 2017<\/a>. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043e\u043d \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u0442 \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c \u00ab<a href=\"https:\/\/jpoint.ru\/talks\/the-art-of-jvm-profiling\/\">JVM-\u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 \u0441 \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u043c \u0442\u0430\u043a\u0442\u0430<\/a>\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0414\u043e\u043a\u043b\u0430\u0434 \u0431\u0443\u0434\u0435\u0442 \u00ab\u0432\u0441\u0435\u0433\u043e\u00bb \u0447\u0430\u0441\u043e\u0432\u043e\u0439, \u0437\u0430\u0442\u043e \u0432 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0430\u0441 \u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0445 \u0441\u043f\u043e\u0440\u043e\u0432!<\/p>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u043d\u0430 JPoint \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u0430\u044f \u043a\u0443\u0447\u0430 \u043a\u0440\u0443\u0442\u044b\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u0438\u0437 \u043c\u0438\u0440\u0430 Java \u2014 \u043e\u0431\u0437\u043e\u0440 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043c\u044b \u0434\u0430\u0432\u0430\u043b\u0438 <a href=\"https:\/\/habrahabr.ru\/company\/jugru\/blog\/323040\/\">\u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0441\u0442\u0435<\/a>, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u043d\u0430 <a href=\"https:\/\/jpoint.ru\/\">\u0441\u0430\u0439\u0442\u0435<\/a> \u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u044f.<\/i><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/324932\/\"> https:\/\/habrahabr.ru\/post\/324932\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438 \u0441 \u043d\u0430\u0448\u0438\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0445\u043e\u0434\u044f\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0443 \u043d\u0430\u0441 \u0432 \u043c\u0435\u043d\u044e \u0441\u043c\u0435\u0441\u044c \u0438\u0437 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u043f\u043e\u0438\u0441\u043a\u0443 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043a\u0440\u044d\u0448\u0435\u0439, \u043f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0449\u0435\u043f\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0410\u043d\u0434\u0440\u0435\u044f \u041f\u0430\u043d\u044c\u0433\u0438\u043d\u0430 (\u041e\u0434\u043d\u043e\u043a\u043b\u0430\u0441\u0441\u043d\u0438\u043a\u0438) \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 JUG&#8217;\u043e\u0432 (\u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u0434\u043e\u043f\u0438\u043b\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0435\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0441 JPoint 2016). \u0412 \u0431\u0435\u0437 \u0441\u0435\u043c\u0438 \u043c\u0438\u043d\u0443\u0442 \u0434\u0432\u0443\u0445\u0447\u0430\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0410\u043d\u0434\u0440\u0435\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u0430\u0445 \u0438 \u0445\u0438\u043f-\u0434\u0430\u043c\u043f\u0430\u0445.<\/p>\n<p>  \u041f\u043e\u0441\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u043b\u0438 \u0435\u0433\u043e \u043d\u0430 \u0434\u0432\u0435 \u0447\u0430\u0441\u0442\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0437\u0430\u0432\u0442\u0440\u0430 \u0432\u044b\u0439\u0434\u0435\u0442 \u0432\u0442\u043e\u0440\u0430\u044f.<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/0pyZERLBZvQ?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441\u044b \u0438 \u0445\u0438\u043f-\u0434\u0430\u043c\u043f\u044b \u2014 \u0442\u0435\u043c\u0443, \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043a\u0430\u0436\u0434\u043e\u043c\u0443, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0435 (\u044f \u0434\u0430\u0436\u0435 \u0431\u0430\u0433\u0443 \u043d\u0430\u0448\u0435\u043b \u0432 JVM, \u043f\u043e\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u0438\u043b \u044d\u0442\u0443 \u0442\u0435\u043c\u0443).<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u044f \u0434\u0435\u043b\u0430\u043b \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0432 \u043e\u0444\u0438\u0441\u0435, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u0433 \u0441\u043f\u0440\u043e\u0441\u0438\u043b: \u00ab\u0412\u0441\u0435 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e?\u00bb \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u043b\u0430\u0439\u0434\u043e\u043c \u0432 \u0441\u0432\u043e\u044e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043f\u043e \u0442\u0435\u043c\u0435 \u043d\u0430 StackOverflow. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-284000","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284000"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284000\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}