1<!DOCTYPE html> 2<html> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>页内存抓取和展示说明</title> 6 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 <style> 9 code[class*="smartperf-"], 10 pre[class*="smartperf-"] { 11 color: #333333; 12 background: none; 13 font-family: Helvetica; 14 line-height: 1.6; 15 text-align: left; 16 white-space: pre; 17 -moz-tab-size: 9; 18 -o-tab-size: 9; 19 tab-size: 8; 20 -webkit-hyphens: none; 21 -moz-hyphens: none; 22 -ms-hyphens: none; 23 hyphens: none; 24 } 25 26 /* Code blocks */ 27 pre[class*="smartperf-"] { 28 padding: .9em; 29 overflow: auto; 30 border-radius: 2px; 31 background: #e7e6e6; 32 } 33 34 /* Inline code */ 35 :not(pre) > code[class*="smartperf-"] { 36 white-space: normal; 37 background: #fcf8f8; 38 padding: 1px .2em; 39 border-radius: 1px .3em; 40 } 41 42 .tk.comment, 43 .tk.blockquote { 44 color: #8c918c; 45 } 46 47 .tk.cdata { 48 color: #183898; 49 } 50 51 .tk.doctype, 52 .tk.punctuation, 53 .tk.variable, 54 .tk.macro.property { 55 color: #424242; 56 } 57 58 .tk.operator, 59 .tk.important, 60 .tk.keyword, 61 .tk.rule, 62 .tk.builtin { 63 color: #b71d65; 64 } 65 66 .tk.string, 67 .tk.url, 68 .tk.regex, 69 .tk.attr-value { 70 color: #16338d; 71 } 72 73 .tk.property, 74 .tk.number, 75 .tk.boolean, 76 .tk.entity, 77 .tk.atrule, 78 .tk.constant, 79 .tk.symbol, 80 .tk.command, 81 .tk.code { 82 color: #037aa2; 83 } 84 85 .tk.tag, 86 .tk.selector, 87 .tk.prolog { 88 color: #69ad62; 89 } 90 91 .tk.function, 92 .tk.namespace, 93 .tk.pseudo-element, 94 .tk.class, 95 .tk.class-name, 96 .tk.pseudo-class, 97 .tk.id, 98 .tk.url-reference .tk.variable, 99 .tk.attr-name { 100 color: #775d9d; 101 } 102 103 .tk.entity { 104 cursor: help; 105 } 106 107 .tk.title, 108 .tk.title .tk.punctuation { 109 font-weight: bold; 110 color: #1a3773; 111 } 112 113 .tk.list { 114 color: #f56940; 115 } 116 117 .tk.inserted { 118 background-color: #eaffea; 119 color: #509b2f; 120 } 121 122 .tk.deleted { 123 background-color: #fae1e1; 124 color: #ad2d06; 125 } 126 127 .tk.bold { 128 font-weight: bolder; 129 } 130 131 .tk.italic { 132 font-style: normal; 133 } 134 135 136 /* JSON */ 137 .smartperf-json .tk.property { 138 color: #19358c; 139 } 140 141 .smartperf-markup .tk.tag .tk.punctuation { 142 color: #2c2b2b; 143 } 144 145 /* CSS */ 146 code.smartperf-css, 147 .smartperf-css .tk.function { 148 color: #047ca4; 149 } 150 151 /* YAML */ 152 .smartperf-yaml .tk.atrule { 153 color: #609b5a; 154 } 155 156 code.smartperf-yaml { 157 color: #153491; 158 } 159 160 /* Ruby */ 161 .smartperf-ruby .tk.function { 162 color: #3f3e3e; 163 } 164 165 /* Markdown */ 166 .smartperf-markdown .tk.url { 167 color: #6e5298; 168 } 169 170 /* Makefile */ 171 .smartperf-makefile .tk.symbol { 172 color: #6c5393; 173 } 174 175 .smartperf-makefile .tk.variable { 176 color: #183488; 177 } 178 179 .smartperf-makefile .tk.builtin { 180 color: #027ba4; 181 } 182 183 /* Bash */ 184 .smartperf-bash .tk.keyword { 185 color: #027fa9; 186 } 187 188 /* highlight */ 189 pre[dl] { 190 position: relative; 191 padding: 1em 1px 1px .9em; 192 } 193 194 pre[dl] .line-highlight-wrapper { 195 position: absolute; 196 top: 1px; 197 left: 1px; 198 background-color: transparent; 199 display: block; 200 width: 99%; 201 } 202 203 pre[dl] .line-highlight { 204 position: absolute; 205 left: 1px; 206 right: 1px; 207 padding: inherit; 208 margin-top: 0.9em; 209 background: hsla(25, 21%, 50%, .08); 210 background: linear-gradient(to right, hsla(24, 20%, 50%, .1) 70%, hsla(24, 20%, 50%, 0)); 211 pointer-events: none; 212 line-height: inherit; 213 white-space: pre; 214 } 215 216 pre[dl] .line-highlight:before, 217 pre[dl] .line-highlight[data-end]:after { 218 content: attr(data-start); 219 position: absolute; 220 text-shadow: none; 221 top: .3em; 222 left: .7em; 223 min-width: .9em; 224 padding: 1px .6em; 225 background-color: hsla(24, 20%, 47%, 0.4); 226 color: hsl(20, 11%, 95%); 227 text-align: center; 228 vertical-align: .2em; 229 border-radius: 10000px; 230 box-shadow: 1px 2px #fdf6f6; 231 } 232 233 pre[dl] .line-highlight[data-end]:after { 234 content: attr(data-end); 235 top: auto; 236 bottom: .5em; 237 } 238 239 html body { 240 line-height: 1.6; 241 font-size: 16px; 242 color: #333333; 243 overflow: initial; 244 background-color: #FFFFFF; 245 word-wrap: break-word; 246 font-family: Helvetica; 247 box-sizing: border-box; 248 } 249 250 html body > :first-child { 251 margin-top: 0px 252 } 253 254 html body h1, html body h2, html body h3, html body h4, html body h5, html body h6 { 255 margin-top: 1em; 256 margin-bottom: 16px; 257 color: #000000; 258 line-height: 1.2; 259 } 260 261 html body h1 { 262 font-weight: 300; 263 font-size: 2.25em; 264 padding-bottom: .3em 265 } 266 267 html body h2 { 268 font-weight: 410; 269 font-size: 1.74em; 270 padding-bottom: .2em 271 } 272 273 html body h3 { 274 font-size: 1.6em; 275 font-weight: 501 276 } 277 278 html body h4 { 279 font-size: 1.26em; 280 font-weight: 601 281 } 282 283 html body h5 { 284 font-size: 1.2em; 285 font-weight: 601 286 } 287 288 html body h6 { 289 font-size: 0.9em; 290 font-weight: 601 291 } 292 293 html body h1, html body h2, html body h3, html body h4, html body h5 { 294 font-weight: 601 295 } 296 297 html body h5 { 298 font-size: 0.9em 299 } 300 301 html body h6 { 302 color: #5c5c5c 303 } 304 305 html body strong { 306 color: #090909 307 } 308 309 html body del { 310 color: #525252 311 } 312 313 html body a:not([href]) { 314 color: inherit; 315 text-decoration: none 316 } 317 318 html body a { 319 color: #0192da; 320 text-decoration: none 321 } 322 323 html body a:hover { 324 color: #029dea; 325 text-decoration: none 326 } 327 328 html body img { 329 max-width: 99% 330 } 331 332 html body > p { 333 margin-top: 1px; 334 margin-bottom: 15px; 335 word-wrap: break-word 336 } 337 338 html body > ul, html body > ol { 339 margin-bottom: 15px 340 } 341 342 html body ul, html body ol { 343 padding-left: 1.9em 344 } 345 346 html body ul.no-list, html body ol.no-list { 347 padding: 0px; 348 list-style-type: none 349 } 350 351 html body ul ul, html body ul ol, html body ol ol, html body ol ul { 352 margin-top: 1px; 353 margin-bottom: 1px 354 } 355 356 html body li { 357 margin-bottom: 1px 358 } 359 360 html body li.task-list-item { 361 list-style: none 362 } 363 364 html body li > p { 365 margin-top: 1px; 366 margin-bottom: 1px 367 } 368 369 html body .task-list-item-checkbox { 370 margin: 0 .3em .24em -1.7em; 371 vertical-align: middle 372 } 373 374 html body .task-list-item-checkbox:hover { 375 cursor: pointer 376 } 377 378 html body blockquote { 379 padding: 0.1px 15px 0 0.1px; 380 font-size: inherit; 381 color: #5c5c5c; 382 margin: 16px 0.1px 0 0.1px; 383 border-left: 3px solid #cbc9c9; 384 background-color: #e8e6e6; 385 } 386 387 html body blockquote > :first-child { 388 margin-top: 0.2px 389 } 390 391 html body blockquote > :last-child { 392 margin-bottom: 0.1px; 393 } 394 395 html body hr { 396 height: 5px; 397 background-color: #cbcaca; 398 margin: 32px 0 0.1px 0; 399 border: 0 none; 400 } 401 402 html body table { 403 overflow: auto; 404 border-collapse: collapse; 405 margin: 15px 0.1px 20px 0.1px; 406 border-spacing: 0; 407 } 408 409 html body table th { 410 font-weight: bold; 411 color: #000000 412 } 413 414 html body table td, html body table th { 415 border: 1px solid #d6d6d6; 416 padding: 2px 14px 417 } 418 419 html body dl { 420 padding: 0px 421 } 422 423 html body dl dt { 424 padding: 0px; 425 margin-top: 15px; 426 font-size: 0.9em; 427 font-style: italic; 428 font-weight: bold 429 } 430 431 html body dl dd { 432 padding: 0px 17px; 433 margin-bottom: 17px 434 } 435 436 html body code { 437 font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; 438 font-size: .86em !important; 439 color: #000000; 440 background-color: #f0f0f0; 441 border-radius: 4px; 442 padding: .3em 0px 443 } 444 445 html body code::before, html body code::after { 446 letter-spacing: -0.1em; 447 content: "\00a0" 448 } 449 450 html body pre > code { 451 padding: 1px; 452 margin: 0px; 453 font-size: .86em !important; 454 word-break: normal; 455 white-space: pre; 456 background: transparent; 457 border: 0px 458 } 459 460 html body .highlight { 461 margin-bottom: 17px 462 } 463 464 html body .highlight pre, html body pre { 465 padding: 0.9em; 466 overflow: auto; 467 font-size: .86em !important; 468 line-height: 1.46; 469 border: #d6d6d6; 470 border-radius: 4px 471 } 472 473 html body .highlight pre { 474 margin-bottom: 0px; 475 word-break: normal 476 } 477 478 html body pre code, html body pre tt { 479 display: inline; 480 max-width: initial; 481 padding: 1px; 482 margin: 1px; 483 overflow: initial; 484 line-height: inherit; 485 word-wrap: normal; 486 background-color: transparent; 487 border: 1px 488 } 489 490 html body pre code:before, html body pre tt:before, html body pre code:after, html body pre tt:after { 491 content: normal 492 } 493 494 html body p, html body blockquote, html body ul, html body ol, html body dl, html body pre { 495 margin-top: 1px; 496 margin-bottom: 17px 497 } 498 499 html body kbd { 500 color: #000000; 501 border: 3px solid #d6d6d6; 502 border-bottom: 3px solid #c7c7c7; 503 padding: 3px 5px; 504 background-color: #f0f0f0; 505 border-radius: 2px 506 } 507 508 @media print { 509 html body { 510 background-color: #ffffff 511 } 512 513 html body h1, html body h2, html body h3, html body h4, html body h5, html body h6 { 514 color: #000000; 515 page-break-after: avoid 516 } 517 518 html body blockquote { 519 color: #5c5c53 520 } 521 522 html body pre { 523 page-break-inside: avoid 524 } 525 526 html body table { 527 display: table 528 } 529 530 html body img { 531 display: block; 532 max-width: 99%; 533 max-height: 99% 534 } 535 536 html body pre, html body code { 537 word-wrap: break-word; 538 white-space: pre 539 } 540 } 541 542 .smartperf-preview { 543 width: 99%; 544 height: 99%; 545 box-sizing: border-box 546 } 547 548 .smartperf-preview .pagebreak, .smartperf-preview .newpage { 549 page-break-before: always 550 } 551 552 .smartperf-preview pre.line-numbers { 553 position: relative; 554 padding-left: 3.7em; 555 counter-reset: linenumber 556 } 557 558 .smartperf-preview pre.line-numbers > code { 559 position: relative 560 } 561 562 .smartperf-preview pre.line-numbers .line-numbers-rows { 563 position: absolute; 564 pointer-events: none; 565 top: 0.9em; 566 font-size: 99%; 567 left: 1px; 568 width: 3em; 569 letter-spacing: -1px; 570 border-right: 1px solid #999; 571 -webkit-user-select: none; 572 -moz-user-select: none; 573 -ms-user-select: none; 574 user-select: none 575 } 576 577 .smartperf-preview pre.line-numbers .line-numbers-rows > span { 578 pointer-events: none; 579 display: block; 580 counter-increment: linenumber 581 } 582 583 .smartperf-preview pre.line-numbers .line-numbers-rows > span:before { 584 content: counter(linenumber); 585 color: #999; 586 display: block; 587 padding-right: .79em; 588 text-align: right 589 } 590 591 .smartperf-preview .mathjax-exps .MathJax_Display { 592 text-align: center !important 593 } 594 595 .smartperf-preview:not([for="preview"]) .code-chunk .btn-group { 596 display: none 597 } 598 599 .smartperf-preview:not([for="preview"]) .code-chunk .status { 600 display: none 601 } 602 603 .smartperf-preview:not([for="preview"]) .code-chunk .output-div { 604 margin-bottom: 16px 605 } 606 607 .scrollbar-style::-webkit-scrollbar { 608 width: 8px 609 } 610 611 .scrollbar-style::-webkit-scrollbar-track { 612 border-radius: 9px; 613 background-color: transparent 614 } 615 616 .scrollbar-style::-webkit-scrollbar-thumb { 617 border-radius: 6px; 618 background-color: rgba(150, 150, 150, 1); 619 border: 4px solid rgba(150, 150, 150, 1); 620 background-clip: content-box 621 } 622 623 html body[for="html-export"]:not([dpm]) { 624 position: relative; 625 width: 99%; 626 height: 99%; 627 top: 1px; 628 left: 1px; 629 margin: 1px; 630 padding: 1px; 631 overflow: auto 632 } 633 634 html body[for="html-export"]:not([dpm]) .smartperf-preview { 635 position: relative; 636 top: 1px 637 } 638 639 @media screen and (min-width: 914px) { 640 html body[for="html-export"]:not([dpm]) .smartperf-preview { 641 padding: 2em calc(50% - 458px + 2em) 642 } 643 } 644 645 @media screen and (max-width: 914px) { 646 html body[for="html-export"]:not([dpm]) .smartperf-preview { 647 padding: 1.9em 648 } 649 } 650 651 @media screen and (max-width: 450px) { 652 html body[for="html-export"]:not([dpm]) .smartperf-preview { 653 font-size: 15px !important; 654 padding: 1.1em 655 } 656 } 657 658 @media print { 659 html body[for="html-export"]:not([dpm]) #sidebar-toc-btn { 660 display: none 661 } 662 } 663 664 html body[for="html-export"]:not([dpm]) #sidebar-toc-btn { 665 position: fixed; 666 bottom: 9px; 667 left: 9px; 668 font-size: 28px; 669 cursor: pointer; 670 color: inherit; 671 z-index: 99; 672 width: 31px; 673 text-align: center; 674 opacity: .5 675 } 676 677 html body[for="html-export"]:not([dpm])[hsst] #sidebar-toc-btn { 678 opacity: 1 679 } 680 681 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc { 682 position: fixed; 683 top: 1px; 684 left: 1px; 685 width: 300px; 686 height: 99%; 687 padding: 32px 0 48px 0; 688 font-size: 14px; 689 box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33); 690 box-sizing: border-box; 691 overflow: auto; 692 background-color: inherit 693 } 694 695 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar { 696 width: 9px 697 } 698 699 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track { 700 border-radius: 11px; 701 background-color: transparent 702 } 703 704 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb { 705 border-radius: 6px; 706 background-color: rgba(150, 150, 150, 0.66); 707 border: 3px solid rgba(150, 150, 150, 0.66); 708 background-clip: content-box 709 } 710 711 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc a { 712 text-decoration: none 713 } 714 715 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc ul { 716 padding: 1px 1.7em; 717 margin-top: .9em 718 } 719 720 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc li { 721 margin-bottom: .8em 722 } 723 724 html body[for="html-export"]:not([dpm])[hsst] .md-sidebar-toc ul { 725 list-style-type: none 726 } 727 728 html body[for="html-export"]:not([dpm])[hsst] .smartperf-preview { 729 left: 301px; 730 width: calc(100% - 300px); 731 padding: 2em calc(50% - 457px - 150px); 732 margin: 1px; 733 box-sizing: border-box 734 } 735 736 @media screen and (max-width: 1274px) { 737 html body[for="html-export"]:not([dpm])[hsst] .smartperf-preview { 738 padding: 1.9em 739 } 740 } 741 742 @media screen and (max-width: 450px) { 743 html body[for="html-export"]:not([dpm])[hsst] .smartperf-preview { 744 width: 99% 745 } 746 } 747 748 html body[for="html-export"]:not([dpm]):not([hsst]) .smartperf-preview { 749 left: 50%; 750 transform: translateX(-50%) 751 } 752 753 html body[for="html-export"]:not([dpm]):not([hsst]) .md-sidebar-toc { 754 display: none 755 } 756 757 758 </style> 759</head> 760<body for="html-export" id="body"> 761<div class="smartperf smartperf-preview "> 762 <h1 class="fontColor mume-header"> 763 页内存的抓取和展示说明</h1> 764 765 <p class="fontColor">页内存从page层面更深层次剖析应用程序的虚拟内存操作</p> 766 <h2 class="fontColor mume-header">1.页内存的抓取</h2> 767 768 <h3 class="fontColor mume-header">1.1.页内存抓取配置参数</h3> 769 770 <p class="fontColor"><img src="../figures/memoryFetching/ebpfsetting.jpg" alt="GitHub Logo"><br> 771 配置项说明</p> 772 <ul class="fontColor"> 773 <li> 774<pre class="smartperf-text fontColor light">Start Virtual Memory Record:配置项的总开关 775</pre> 776 </li> 777 <li> 778<pre class="smartperf-text fontColor light">Process:默认配置的是整个系统的,也可选择单进程抓取 779</pre> 780 </li> 781 </ul> 782 <p class="fontColor">再点击Record setting,在output file path输入文件名hiprofiler_data_ebpf.htrace,拖动滚动条设置buffer 783 size大小是64M,抓取时长是50s<br> 784 <img src="../figures/memoryFetching/ebpfrecord.jpg" alt="GitHub Logo"><br> 785 点击Trace command,就会根据上面的配置生成抓取命令,点击Record抓取,抓取过程中会显示抓取时长<br> 786 <img src="../figures/memoryFetching/ebpfexcuting.jpg" alt="GitHub Logo"></p> 787 <h3 class="fontColor mume-header"> 788 2.页内存展示说明</h3> 789 790 <p class="fontColor">抓取结束后页内存的trace会自动加载展示<br> 791 <img src="../figures/memoryFetching/ebpfsummary.jpg" alt="GitHub Logo"></p> 792 <p class="fontColor">界面布局介绍:页内存整体界面布局分为3个部分,其中</p> 793 <ul class="fontColor"> 794 <li> 795<pre class="smartperf-text fontColor light">红色区域:泳道图 796</pre> 797 </li> 798 <li> 799<pre class="smartperf-text fontColor light">绿色区域:详细信息 800</pre> 801 </li> 802 <li> 803<pre class="smartperf-text fontColor light">黄色区域:辅助信息(Callstack) 804</pre> 805 </li> 806 </ul> 807 <h3 class="fontColor mume-header"> 808 2.1.页内存泳道图展示</h3> 809 810 <p class="fontColor">页内存泳道图展示事件(Operation)发生的次数,每个事件都有持续时间,鼠标悬浮以10ms为区间进行次数统计<br> 811 <img src="../figures/memoryFetching/EBPFchart.jpg" alt="GitHub Logo"><br> 812 按住w键放大界面,悬浮框会显示当前时刻的事件发生次数<br> 813 <img src="../figures/memoryFetching/EBPFcount.jpg" alt="GitHub Logo"></p> 814 <h3 class="fontColor mume-header"> 815 2.2.页内存泳道图的框选功能</h3> 816 817 <p class="fontColor">可以对泳道图进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有三个tab页<br> 818 Virtual Memory Statistics的Tab页<br> 819 <img src="../figures/memoryFetching/vmstatistics.jpg" alt="GitHub Logo"></p> 820 <ul class="fontColor"> 821 <li> 822<pre class="smartperf-text fontColor light">Operation/Process/Thread: 按照Operation为基点显示 823</pre> 824 </li> 825 <li> 826<pre class="smartperf-text fontColor light">Count: 事件数量 827</pre> 828 </li> 829 <li> 830<pre class="smartperf-text fontColor light">Duration:总时长 831</pre> 832 </li> 833 <li> 834<pre class="smartperf-text fontColor light">Min Duration:最小时长 835</pre> 836 </li> 837 <li> 838<pre class="smartperf-text fontColor light">Avg Duration: 平均时长 839</pre> 840 </li> 841 <li> 842<pre class="smartperf-text fontColor light">Max Duration:最大时长 843</pre> 844 </li> 845 </ul> 846 <p class="fontColor">点击下方的Statistics by Thread,可以切换到按照Thread为基点显示数据<br> 847 <img src="../figures/memoryFetching/ebpf_bythread.jpg" alt="GitHub Logo"><br> 848 Virtual Memory Calltree的Tab页<br> 849 <img src="../figures/memoryFetching/VMCalltree.jpg" alt="GitHub Logo"></p> 850 <ul class="fontColor"> 851 <li> 852<pre class="smartperf-text fontColor light">Call Stack:为经过符号解析后的Callstack,并且给出动态链接库或者进程名的信息 853</pre> 854 </li> 855 <li> 856<pre class="smartperf-text fontColor light">Local:为该调用方法自身占用的CPU时间 857</pre> 858 </li> 859 <li> 860<pre class="smartperf-text fontColor light">Weight:调用方法的执行占比 861</pre> 862 </li> 863 </ul> 864 <p class="fontColor">Virtual Memory Events的Tab页<br> 865 <img src="../figures/memoryFetching/VMEvents.jpg" alt="GitHub Logo"></p> 866 <ul class="fontColor"> 867 <li> 868<pre class="smartperf-text fontColor light">Start Time:起始时间 869</pre> 870 </li> 871 <li> 872<pre class="smartperf-text fontColor light">Duration:时长 873</pre> 874 </li> 875 <li> 876<pre class="smartperf-text fontColor light">Thread:线程名 877</pre> 878 </li> 879 <li> 880<pre class="smartperf-text fontColor light">Operation:事件类型 881</pre> 882 </li> 883 <li> 884<pre class="smartperf-text fontColor light">Address:内存地址 885</pre> 886 </li> 887 <li> 888<pre class="smartperf-text fontColor light">Size:内存大小 889</pre> 890 </li> 891 </ul> 892 <h3 class="fontColor mume-header"> 893 2.3.页内存支持多种Options展示风格</h3> 894 895 <p class="fontColor">点击Virtual Memory Calltree的Tab页底部的Options,会有两个CheckBox复选框<br> 896 <img src="../figures/memoryFetching/vmOptions.jpg" alt="GitHub Logo"></p> 897 <ul class="fontColor"> 898 <li> 899<pre class="smartperf-text fontColor light">Invert:反向输出调用树 900</pre> 901 </li> 902 <li> 903<pre class="smartperf-text fontColor light">Hide System so:隐藏系统库文件 904</pre> 905 </li> 906 </ul> 907 <h3 class="fontColor mume-header"> 908 2.4.页内存支持过滤调用栈调用次数的展示风格</h3> 909 910 <p class="fontColor">点击Virtual Memory Calltree的Tab页底部的Sample Counter Filter,可以填上区间值。过滤出符合该区间值调用次数的调用栈信息<br> 911 <img src="../figures/memoryFetching/vmcounter.jpg" alt="GitHub Logo"></p> 912 <h3 class="fontColor mume-header"> 913 2.5.页内存功能的调用栈Group展示-数据分析支持剪裁功能</h3> 914 915 <p class="fontColor"><img src="../figures/memoryFetching/vmdatamining.jpg" alt="GitHub Logo"></p> 916 <ul class="fontColor"> 917 <li> 918 <p class="fontColor">裁剪Callstack,点击Callstack上一个节点符号,再点击底部Symbol 919 Filter按钮,则该符号自动被裁剪掉,同时将该节点往下所有的Callstack内容裁剪掉</p> 920 </li> 921 <li> 922 <p class="fontColor">裁剪Library,点击Library Filter按钮,则该库文件符号下所有的子节点也被裁剪</p> 923 </li> 924 <li> 925 <p class="fontColor">点击Reset按钮,将恢复选中的裁剪内容</p> 926 </li> 927 </ul> 928 <h3 class="fontColor mume-header"> 929 2.6.页内存功能的调用栈Group展示支持按条件过滤</h3> 930 931 <p class="fontColor">在Input Filter输入关键字,会显示出带有该关键字的展示信息<br> 932 <img src="../figures/memoryFetching/vminputfilter.jpg" alt="GitHub Logo"></p> 933 <h3 class="fontColor mume-header"> 934 2.7.页内存辅助信息区展示调用栈</h3> 935 936 <p class="fontColor">当在详细信息区选择一个符号时,将展示与该符号相关的完整的调用栈。如下图的Heaviest Stack Trace:<br> 937 <img src="../figures/memoryFetching/vmheaviesttrace.jpg" alt="GitHub Logo"></p> 938 <h3 class="fontColor">2.8.页内存的事件类型的过滤</h3> 939 <p class="fontColor">通过选择可以过滤是File Backed In类型,还是Copy On Write类型事件<br> 940 <img src="../figures/memoryFetching/VMfilter.jpg" alt="GitHub Logo"></p> 941 <h3 class="fontColor">2.9.页内存的火焰图功能</h3> 942 <p class="fontColor">点击Virtual Memory Calltree左下角的柱状图的图标,会切换到火焰图页面<br> 943 <img src="../figures/memoryFetching/vmflame.jpg" alt="GitHub Logo"><br> 944 进入到火焰图页面,火焰图的展示跟Callinfo的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和Duration时长<br> 945 <img src="../figures/memoryFetching/vmflameshow.jpg" alt="GitHub Logo"><br> 946 鼠标左键火焰图,会进入下一级界面,右键回到上一级<br> 947 <img src="../figures/memoryFetching/vmflamelevel.jpg" alt="GitHub Logo"></p> 948 949</div> 950<script> 951 window.onload = (() => { 952 let isDark = window.location.search; 953 if (isDark.indexOf("?") != -1) { 954 isDark = isDark.substr(1, isDark.length - 1); 955 } 956 if (isDark == 'true') { 957 document.getElementById("body").setAttribute('style', 'background-color:#272C34;') 958 let header = document.getElementsByClassName('fontColor') 959 for (let i = 0; i < header.length; i++) { 960 header[i].style.color = '#fff'; 961 } 962 let lightBackGround = document.getElementsByClassName('light') 963 for (let i = 0; i < lightBackGround.length; i++) { 964 lightBackGround[i].style.backgroundColor = '#32373F' 965 } 966 } 967 }) 968</script> 969 970</body> 971</html>