{"id":1101,"date":"2026-09-11T14:36:28","date_gmt":"2026-09-11T14:36:28","guid":{"rendered":"https:\/\/boochlin.com\/?p=1101"},"modified":"2026-09-13T15:36:04","modified_gmt":"2026-09-13T15:36:04","slug":"android-%e7%88%9b%e8%a3%9d%e7%bd%ae%e6%83%b3%e8%b7%91%e4%ba%ba%e8%87%89%e8%be%a8%e8%ad%98%e7%b3%bb%e5%88%97-%e9%a2%a8%e6%a0%bc%e9%87%8d%e6%a7%8b%e5%af%a9%e9%96%b1%e5%b0%8e%e8%a6%bd","status":"publish","type":"post","link":"https:\/\/boochlin.com\/?p=1101","title":{"rendered":"\u300a\u721b\u88dd\u7f6e\u60f3\u8dd1 AI\u300b\u5168\u7cfb\u5217\u67b6\u69cb\u5c0e\u89bd\uff1a\u767e\u5143\u6676\u7247\u7684\u6975\u9650\u58d3\u69a8\u8207\u7834\u5c40\u5730\u5716"},"content":{"rendered":"<blockquote>\n<p>\u300c\u7576\u786c\u9ad4\u6210\u672c\u88ab\u780d\u5230\u9aa8\u6298\uff0c\u5269\u4e0b\u7684\u6bcf\u4e00\u6beb\u79d2\u8207\u6bcf\u4e00 KB\uff0c\u90fd\u662f\u8edf\u9ad4\u67b6\u69cb\u5e2b\u7528\u547d\u63db\u4f86\u7684\u3002\u300d<\/p>\n<\/blockquote>\n<p>\u9019\u662f\u4e00\u500b\u95dc\u65bc\u5982\u4f55\u5728\u767e\u5143\u7d1a\u9ad8\u901a\u4f4e\u968e\u6676\u7247\uff084 \u9846 Cortex-A53 @ 1.3GHz\u30012GB RAM\u3001\u7121 NPU\u3001Android \u958b\u6a5f\u76f4\u63a5\u5403\u6389 1.3GB\uff09\u6975\u5ea6\u53d7\u9650\u7684\u786c\u9ad4\u4e0a\uff0c\u625b\u8d77\u91d1\u878d\u7d1a BCTC \u6d3b\u9ad4\u4eba\u81c9\u8fa8\u8b58\u3001\u8981\u6c42\u5c0f\u65bc 1 \u79d2\u958b\u9580\u300199.99% \u7cbe\u5ea6\u4e14 7&#215;24 \u5c0f\u6642\u4e0d\u6b7b\u6a5f\u7684\u771f\u5be6\u5de5\u7a0b\u5be6\u9304\u3002<\/p>\n<p>\u5728\u908a\u7de3\u5de5\u63a7\u7d42\u7aef\u7684\u4e16\u754c\u88e1\uff0c\u6c92\u6709\u300c\u52a0\u8a18\u61b6\u9ad4\u300d\u6216\u300c\u63db\u9ad8\u968e\u6676\u7247\u300d\u9019\u7a2e\u9078\u9805\u2014\u2014\u786c\u9ad4 BOM Cost \u6bcf\u58d3\u4f4e\u4e00\u7f8e\u5143\uff0c\u51fa\u8ca8\u842c\u53f0\u5c31\u662f\u5e7e\u5341\u842c\u7684\u6de8\u5229\u3002\u7576\u516c\u53f8\u9078\u578b\u62cd\u677f\u4e86\u9019\u9846\u9023\u6ed1\u684c\u9762\u90fd\u6703\u5598\u7684\u6676\u7247\u6642\uff0c\u6211\u5011\u552f\u4e00\u7684\u6d3b\u8def\uff0c\u5c31\u662f\u5f9e Android \u7cfb\u7d71\u5c64\u7d1a\u958b\u59cb\u52d5\u5200\uff0c\u628a\u6574\u500b\u7cfb\u7d71\u58d3\u69a8\u5230\u6975\u81f4\u3002<\/p>\n<p>\u672c\u5c0e\u89bd\u5c07\u9019\u8d9f\u9577\u9054\u6578\u767e\u5929\u7684\u300c\u8edf\u786c\u517c\u65bd\u300d\u69a8\u6c41\u6b77\u7a0b\uff0c\u6574\u7406\u70ba\u4e94\u5927\u7834\u5c40\u968e\u6bb5\u8207 17 \u7bc7\u6838\u5fc3\u5be6\u6230\u9577\u6587\u3002<\/p>\n<hr>\n<h2>\u4e00\u3001 \u5168\u7cfb\u5217 5 \u5927\u968e\u6bb5\u7834\u5c40\u67b6\u69cb\u5716<\/h2>\n<pre><code class=\"hljs language-text\">[ \u7269\u7406\u6b7b\u5c40 ] 2048MB \u5be6\u9ad4 RAM - 1300MB \u7cfb\u7d71\u5e38\u99d0 - 950MB \u96d9\u93e1\u9ad8\u983b Buffer = -202MB (\u76f4\u63a5\u6b7b\u6a5f)\n    \u2502\n    \u251c\u2500\u2500 \u968e\u6bb5 1\uff1a\u7cfb\u7d71\u6e1b\u78c5\u8207\u6c34\u7dda\u6cbb\u7406 (\u6de8\u596a\u56de 520MB+ \u5be6\u9ad4\u8a18\u61b6\u9ad4)\n    \u2502     \u251c\u2500\u2500 \u7b97\u529b\u8207\u8a18\u61b6\u9ad4\u5100\u8868\u677f\u5efa\u7acb (USS \/ PSS \/ RSS \u7cbe\u6e96\u91cf\u6e2c)\n    \u2502     \u251c\u2500\u2500 AOSP \u88c1\u526a\uff1ago_defaults \u8207 Kiosk 20+ \u7121\u7528\u7cfb\u7d71\u670d\u52d9\u5fb9\u5e95\u62d4\u9664\n    \u2502     \u2514\u2500\u2500 \u5167\u6838\u6297\u58d3\uff1aZRAM \u58d3\u7e2e\u3001SWAP \u7981\u5fcc\u8207 KSM \u529f\u8017\u53d6\u6368\n    \u2502\n    \u251c\u2500\u2500 \u968e\u6bb5 2\uff1a\u5e95\u5c64\u6297\u58d3\u3001LMKD \u8207 GC \u6c7a\u6230 (720 \u5c0f\u6642\u7a69\u614b 0 GC Thrashing)\n    \u2502     \u251c\u2500\u2500 LMKD \u81ea\u5b9a\u7fa9\u9032\u7a0b\u6c34\u7dda\u6bba\u624b\u8207\u9632 OOM \u7b56\u7565\n    \u2502     \u251c\u2500\u2500 \u5927\u5167\u5b58\u5168\u9762\u4e0b\u6c89 C++ Native\uff0cJava Heap \u6046\u5b9a 15MB\n    \u2502     \u251c\u2500\u2500 \u4e09\u8def\u9ad8\u983b\u5f71\u50cf\u6d41 DirectBuffer \u8de8\u5c64\u96f6\u62f7\u8c9d\n    \u2502     \u2514\u2500\u2500 \u7269\u7406\u4e16\u754c Watchdog\uff1aGPIO \u96fb\u64ca\u8207\u986f\u5f0f\u975c\u614b\u5ee3\u64ad\u62c9\u6d3b\n    \u2502\n    \u251c\u2500\u2500 \u968e\u6bb5 3\uff1a\u5f71\u50cf\u6f14\u7b97\u6cd5\u6975\u9650\u69a8\u6c41 (150ms \u2794 3ms\uff0c\u767e\u500d\u63d0\u901f)\n    \u2502     \u251c\u2500\u2500 QFastCV + ARM NEON \u5411\u91cf\u6307\u4ee4\u96c6\uff1aYUV \u8f49\u78bc &lt; 1ms\n    \u2502     \u2514\u2500\u2500 ARM Compute Library (ACL) SGEMM\uff1a5,000 \u4eba\u77e9\u9663\u7279\u5fb5\u6bd4\u5c0d 3ms\n    \u2502\n    \u251c\u2500\u2500 \u968e\u6bb5 4\uff1a\u96d9\u93e1\u6642\u7a7a\u540c\u6b65\u8207 3D \u7a7a\u9593\u611f\u77e5 (Sony iToF 30fps \u5373\u6642\u9ede\u96f2)\n    \u2502     \u251c\u2500\u2500 RGB \u8207 iToF \u8de8\u611f\u6e2c\u5668\u6beb\u79d2\u7d1a\u6642\u7a7a\u540c\u6b65\u8207\u975e\u963b\u585e\u968a\u5217\n    \u2502     \u2514\u2500\u2500 RAW12 \u6df1\u5ea6\u5716\u8f49 3D \u7a7a\u9593\u9ede\u96f2\u8207 OpenGL ES \u5373\u6642\u8457\u8272\n    \u2502\n    \u2514\u2500\u2500 \u968e\u6bb5 5\uff1a\u908a\u7de3\u5de5\u63a7\u9023\u7dda\u8207\u8fd1\u5834\u914d\u7db2 (\u5de5\u696d\u7d1a\u7a69\u56fa\u9023\u7dda)\n          \u251c\u2500\u2500 WebSocket \u96d9\u5411\u9577\u9023\u7dda\u3001Protobuf \u5e8f\u5217\u5316\u8207\u96e2\u7dda\u96d9\u5beb\u67b6\u69cb\n          \u251c\u2500\u2500 \u6c38\u9060\u4e0d\u95dc\u76f8\u6a5f\uff1aWebRTC \u8996\u8a0a\u514d\u5207\u63db 0ms \u6436\u76f8\u6a5f\u9ed1\u5c4f\u89e3\u6c7a\u65b9\u6848\n          \u2514\u2500\u2500 \u9580\u7981\u6a5f\u7576 BLE Peripheral \u8fd1\u5834\u914d\u7db2\u8207 31-Byte \u5ee3\u64ad\u62c6\u5206<\/code><\/pre>\n<hr>\n<h2>\u4e8c\u3001 \u5168\u7cfb\u5217 17 \u7bc7\u6838\u5fc3\u6587\u7ae0\u5c0e\u8b80\u8207\u95b1\u8b80\u8def\u5f91<\/h2>\n<h3>\u968e\u6bb5 1\uff1a\u786c\u9ad4\u74f6\u9838\u91cf\u6e2c\u8207\u7cfb\u7d71\u6e1b\u78c5<\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=401\">\u7b2c 0 \u7bc7\uff1a\u5230\u5e95\u6709\u591a\u721b\uff1f\uff08\u5168\u7cfb\u5217\u98a8\u683c\u6bcd\u672c\uff09<\/a><\/strong><br \/>\n\u63ed\u9732 QM215 \u7269\u7406\u786c\u50b7\u8207 BCTC \u91d1\u878d\u8a8d\u8b49\u7684\u6b98\u9177\u8981\u6c42\u3002\u516c\u958b\u6838\u5fc3\u7269\u7406\u6b7b\u5c40\u7b97\u5f0f\uff1a<code>2048MB - 1300MB - 950MB = -202MB &lt; 0<\/code>\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=461\">\u7b2c 1 \u7bc7\uff1a\u8a55\u4f30\u7b2c\u4e00\uff1a\u6c92\u6709\u5100\u8868\u677f\u7684\u98db\u6a5f\u6c92\u4eba\u6562\u958b<\/a><\/strong><br \/>\n\u6df1\u5165\u62c6\u89e3 <code>dumpsys meminfo<\/code>\u3001<code>procrank<\/code>\u3001<code>smaps<\/code>\uff0c\u91d0\u6e05 USS\u3001PSS\u3001RSS \u771f\u5be6\u7269\u7406\u908a\u754c\uff1b\u63ed\u9732\u8868\u9762 456MB Free RAM \u80cc\u5f8c\uff0c\u771f\u6b63\u7121\u5ef6\u9072\u7a7a\u9593\u53ea\u6709 64MB \u7684\u771f\u76f8\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=416\">\u7b2c 2 \u7bc7\uff1a\u8a18\u61b6\u9ad4\u512a\u5316\uff1a\u7121\u7528\u7cfb\u7d71\u670d\u52d9\u5fb9\u5e95\u5254\u9664<\/a><\/strong><br \/>\n\u5206\u70ba AOSP \u6a19\u6e96\u898f\u7bc4\uff08<code>go_defaults.mk<\/code>\u3001\u62d4\u9664 Telephony\uff09\u8207 Kiosk \u6975\u9650\u62bd\u8102\uff08Launcher3\u3001SystemUI\u3001LatinIME\u3001\u7121\u96fb\u6c60\uff09\uff0c\u4e00\u8209\u596a\u56de 520MB \u5be6\u9ad4\u8a18\u61b6\u9ad4\uff01<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=418\">\u7b2c 3 \u7bc7\uff1a\u7cfb\u7d71\u512a\u5316\uff1aZRAM, SWAP, KSM \u64f4\u5f35\u6700\u5927\u503c<\/a><\/strong><br \/>\n\u6df1\u5165\u5256\u6790 DMA\/ION Pinned \u9801\u9762\u4e0d\u53ef\u58d3\u7e2e\u672c\u8cea\uff1b\u5be6\u6e2c KSM \u8017 10% CPU \u50c5\u7701 20MB \u679c\u65b7\u62d4\u9664\uff1b\u63ed\u9732 eMMC Swap \u78e8\u640d\u5feb\u9583\u8a18\u61b6\u9ad4\u7684\u5b9a\u6642\u70b8\u5f48\uff0c\u78ba\u7acb 256MB ZRAM LZ4 \u514b\u5236\u85dd\u8853\u3002<\/li>\n<\/ul>\n<hr>\n<h3>\u968e\u6bb5 2\uff1a\u5e95\u5c64\u8a18\u61b6\u9ad4\u9632\u7dda\u3001LMKD \u8207 GC \u6c7a\u6230<\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=431\">\u7b2c 4 \u7bc7\uff1a\u8a18\u61b6\u9ad4\u63a7\u5834\u5e2b LMKD<\/a><\/strong><br \/>\n\u5f9e In-kernel LMK \u6f14\u9032\u5230 Userspace LMKD\uff1b\u4fee\u6539 <code>ProcessList.java<\/code> \u5feb\u53d6\u4e0a\u9650\uff0832 \u2794 3\uff09\uff1b\u53ef\u7528 Free RAM \u5f9e\u7015\u5371\u7684 64MB \u66b4\u589e\u81f3 470MB\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=453\">\u7b2c 5 \u7bc7\uff1aGC \u662f\u552f\u4e00\u6703\u95dc\u5fc3\u4f60 OOM \u7684\u597d\u4eba<\/a><\/strong><br \/>\n\u6df1\u5ea6\u5256\u6790 ART GC Log\uff08<code>for alloc<\/code> vs <code>background<\/code> vs <code>NativeAlloc<\/code>\uff09\uff1b\u7b2c\u4e00\u6027\u539f\u7406\u5c07\u5927\u8a18\u61b6\u9ad4\u5168\u9762\u4e0b\u6c89 C++ Native\uff0c\u8b93 Java Heap \u6046\u5b9a\u7dad\u6301\u5728 15MB \u8212\u9069\u5708\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=912\">\u7b2c 6 \u7bc7\uff1a\u4e09\u8def\u9ad8\u983b\u5f71\u50cf\u6d41\uff1a\u4e09\u500d\u84cb\u4e9e\uff0c\u8d95\u5feb GC<\/a><\/strong><br \/>\nRGB (13.8MB\/s) + ToF (55.3MB\/s) \u7e3d\u91cf 69.1MB\/s \u539f\u59cb\u704c\u5165\uff01\u900f\u904e\u300c0-new \u9435\u7897\u968a\u5217\u300d\u3001\u300cDirectBuffer \u8de8\u5c64\u96f6\u62f7\u8c9d\u300d\u8207\u300c\u96d9\u5c64\u80cc\u58d3 Drop-Oldest\u300d\uff0c\u5f85\u6a5f CPU \u8ca0\u8f09\u5f9e 100% \u964d\u81f3 15%~20%\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=895\">\u7b2c 7 \u7bc7\uff1a\u7269\u7406\u4e16\u754c\u9700\u8981 watchdog<\/a><\/strong><br \/>\n\u7368\u7acb MCU \u906d\u95b9\u5272\u5f8c\u7684\u8edf\u9ad4\u81ea\u6551\uff1a\u986f\u5f0f\u975c\u614b\u5ee3\u64ad\u51b7\u555f\u52d5\u62c9\u6d3b\u9032\u7a0b\uff1bLinux NUD (ARP) 0 CPU \u76e3\u63a7\u7db2\u5361\u786c\u9ad4\u6b7b\u9396\uff1b\u76f8\u6a5f\u65b7\u6d41\u5169\u6bb5\u5f0f GPIO 500ms \u96fb\u64ca\u91cd\u555f\u6a5f\u5236\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=933\">\u88dc\u5145\u7bc7\uff1aGC Thrashing \u601d\u8def\u88dc\u5145<\/a><\/strong><br \/>\n\u63ed\u9732\u6bcf 20ms \u89f8\u767c\u4e00\u6b21 GC \u6e05\u7406 1KB \u7684\u7015\u6b7b\u73fe\u5834\uff1b\u63ea\u51fa\u7b2c\u4e09\u65b9\u5eab\u6b98\u7559 <code>finalize()<\/code> \u585e\u7206 <code>FinalizerDaemon<\/code> \u7368\u6728\u6a4b\uff0c\u5168\u9762\u9081\u5411\u986f\u5f0f\u751f\u547d\u9031\u671f\u3002<\/li>\n<\/ul>\n<hr>\n<h3>\u968e\u6bb5 3\uff1a\u5f71\u50cf\u6f14\u7b97\u6cd5\u6975\u9650\u69a8\u6c41\u8207\u7570\u8cea\u904b\u7b97<\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=952\">\u7b2c 8 \u7bc7\uff1aYUV_420_888 \u9084\u80fd\u600e\u6a23\u52a0\u901f\uff1aQFastCV<\/a><\/strong><br \/>\n\u5256\u6790 Semi-Planar NV21 \u786c\u9ad4 ISP \u6383\u63cf\u8207 Row Stride \u5783\u573e\u8a18\u61b6\u9ad4\uff1bJava 24 \u842c\u6b21\u908a\u754c\u6aa2\u67e5\u8017\u6642 15ms\uff0c\u5c0d\u6bd4\u9ad8\u901a QFastCV ARM NEON <code>VLD2<\/code> \u5411\u91cf\u62c6\u5206\u964d\u81f3 &lt; 1ms\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=943\">\u7b2c 9 \u7bc7\uff1a\u5144\u5f1f\u9f4a\u5fc3\uff0c\u8edf\u786c\u517c\u65bd\uff1aARM Compute Library (ACL)<\/a><\/strong><br \/>\n5,000 \u4eba 1:N \u7279\u5fb5\u77e9\u9663\u6bd4\u5c0d\u6f14\u9032\u53f2\uff1a\u7d14 Java \u96d9\u91cd\u8ff4\u5708 150ms \u2794 JNI \u983b\u7e41\u63db\u5411\u707d\u96e3 320ms \u2794 ARM ACL SGEMM 3ms\uff01\u63d0\u901f\u6574\u6574 100 \u500d\uff01<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=1006\">\u756a\u5916\u7bc7\uff1a\u5f9e 50ms \u5230 3ms\uff1aARM NEON\u3001FastCV \u8207\u8a18\u61b6\u9ad4\u6975\u9650\u69a8\u6c41\u6307\u5357<\/a><\/strong><br \/>\n\u76f4\u9762\u8a18\u61b6\u9ad4\u7246\uff08A53 \u8b80 L1 1<del>3 \u6642\u8108 vs DRAM 150<\/del>200 \u6642\u8108\uff09\uff1bSoA vs AoS \u6392\u5e03\u8abf\u512a\uff1b\u5168\u93c8\u8def\u7aef\u5230\u7aef\u9a57\u6536\u8017\u6642\u5f9e 1.5 \u79d2\u58d3\u5236\u81f3 280ms\u3002<\/li>\n<\/ul>\n<hr>\n<h3>\u968e\u6bb5 4 &amp; 5\uff1a\u96d9\u76ee 3D \u8996\u89ba\u3001ToF \u9ede\u96f2\u8207\u5de5\u63a7\u901a\u8a0a<\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=968\">\u7b2c 10 \u7bc7\uff1a\u96d9\u93e1\u982d\u7684\u6642\u7a7a\u4fee\u7f85\u5834\uff1aRGB \u8207 ToF<\/a><\/strong><br \/>\nRGB 30fps \u8207 ToF \u9ede\u96f2\u6642\u7a7a\u932f\u4f4d\u5f15\u767c\u6d3b\u9ad4\u8aa4\u5224\uff1b\u8a2d\u8a08 RGB Master \u706b\u8eca\u982d\u975e\u963b\u585e\uff080ms\uff09\u62c9\u53d6 ToF \u6700\u65b0\u5e40\u6a5f\u5236\uff0c\u9f3b\u5c16\u7a7a\u9593\u6df1\u5ea6\u9580\u6abb\u63d0\u65e9\u77ed\u8def\u7121\u6548\u904b\u7b97\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=997\">\u7b2c 11 \u7bc7\uff1aToF RAW12 \u8f49 3D \u9ede\u96f2<\/a><\/strong><br \/>\n30.7 \u842c\u9ede 3D \u9ede\u96f2\u5373\u6642\u6e32\u67d3\uff1aC++ \u5e7e\u4f55\u89e3\u7b97\u3001\u52d5\u614b\u964d\u63a1\u6a23\u780d 80% GPU \u8ca0\u64d4\u3001Atan2 \u67e5\u8868\u6cd5\u3001NEON 8 \u50cf\u7d20\u4e26\u884c\u3001\u725b\u9813\u903c\u8fd1\u958b\u65b9\u6d88\u6ec5\u958b\u6839\u865f\u5ef6\u9072\uff0c\u6700\u5f8c\u4ee5 OpenGL ES <code>GL_POINTS<\/code> \u6e32\u67d3\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=1010\">\u7b2c 12 \u7bc7\uff1a\u8aaa\u5230\u5e95\u9084\u662f\u4e00\u53f0 IOT\uff1aWebSocket \u7bc7<\/a><\/strong><br \/>\n\u5de5\u63a7\u9577\u9023\u7dda\u5be6\u6230\uff1a0.1 \u79d2\u6975\u901f\u958b\u9580\u3001Protobuf \u5e79\u6389 JSON Base64 \u7701 60% \u983b\u5bec\u8207\u8a18\u61b6\u9ad4\uff1bHandlerThread \u55ae\u57f7\u884c\u7dd2\u4e8b\u4ef6\u968a\u5217\u9632\u7af6\u614b\uff1bSQLite \u96e2\u7dda\u96d9\u6307\u91dd\u8207 ACK \u9589\u74b0\u4fdd\u8b49\u53ef\u9760\u4ea4\u4ed8\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=1015\">\u7b2c 13 \u7bc7\uff1a\u70ba\u4e86\u5e7e\u4e4e\u4e0d\u6703\u7528\u5230\u7684\u529f\u80fd\u9700\u8981\u5927\u6539\u7279\u6539\u7684 WebRTC<\/a><\/strong><br \/>\nAndroid <code>cameraserver<\/code> \u6392\u4ed6\u6027\u885d\u7a81\uff1b\u8840\u6dda\u907a\u7522\u300csleep 5 \u79d2\u300d\u8207\u639b\u65b7\u901a\u8a71\u9ed1\u5c4f\u6b7b\u9396\u771f\u76f8\uff1b\u7d42\u6975\u7834\u5c40\u6cd5\uff1a<strong>\u6c38\u9060\u4e0d\u95dc\u76f8\u6a5f<\/strong>\uff0c\u4ee5\u55ae\u4e00\u76f8\u6a5f\u5e38\u99d0\u6e90 + <code>ExternalVideoCapturer<\/code> + 3 \u69fd\u5b89\u5168\u7269\u4ef6\u6c60\uff0c\u5207\u63db\u8017\u6642\u5f9e 5000ms \u964d\u81f3 0ms\u3002<\/li>\n<li><strong><a href=\"https:\/\/boochlin.com\/?p=1118\">\u7b2c 14 \u7bc7\uff1a\u9580\u7981\u6a5f\u7576 BLE Peripheral \u7684\u73fe\u5834\u8e29\u5751\u8a18<\/a><\/strong><br \/>\n\u65bd\u5de5\u73fe\u5834\u7121\u89f8\u63a7\u3001\u5f37\u5149\u53cd\u5149\u60c5\u5883\uff1b\u89d2\u8272\u5012\u8f49\u70ba BLE Peripheral\uff080% CPU \u958b\u92b7\u4fdd\u8b77 30fps \u8fa8\u8b58\uff09\uff1b31-Byte \u96d9\u5c64\u5ee3\u64ad\u62c6\u5206\uff1b\u6b7b\u5b88 20-Byte \u4fdd\u5e95\u8207 2-Byte \u72c0\u614b\u6a5f\uff1b7-Byte TLV \u975c\u614b IP \u914d\u7f6e\u3002<\/li>\n<\/ul>\n<hr>\n<h2>\u4e09\u3001 \u6838\u5fc3\u5de5\u7a0b\u5fc3\u6cd5\u7e3d\u7d50<\/h2>\n<ol>\n<li><strong>\u5148\u628a\u7cfb\u7d71\u58d3\u5230\u5269\u9aa8\u982d\uff0cAI \u624d\u80fd\u9577\u808c\u8089<\/strong>\uff1a\u4e0d\u8981\u671f\u5f85\u5728\u81c3\u816b\u7684 AOSP \u9810\u8a2d\u7cfb\u7d71\u4e0a\u8dd1\u91cd\u578b\u795e\u7d93\u7db2\u8def\uff0c\u7cfb\u7d71\u88c1\u526a\u662f\u908a\u7de3\u904b\u7b97\u7684\u7b2c\u4e00\u9053\u9632\u7dda\u3002<\/li>\n<li><strong>\u8a18\u61b6\u9ad4\u662f\u7269\u7406\u4e16\u754c\u7684\u6709\u9650\u8cc7\u6e90<\/strong>\uff1aJava Heap \u53ea\u662f\u8868\u9762\uff0cDMA Buffer\u3001ION \u8a18\u61b6\u9ad4\u3001Native Alloc \u8207 Page Cache \u624d\u662f\u5f15\u767c OOM \u7684\u6df1\u6c34\u5340\u3002<\/li>\n<li><strong>\u96f6\u62f7\u8c9d\u662f\u552f\u4e00\u7684\u9ad8\u983b\u901a\u9053<\/strong>\uff1aDirectBuffer \u8cab\u7a7f Java\u3001JNI\u3001C++ \u8207 GPU\uff0c\u6d88\u6ec5\u6240\u6709\u7121\u610f\u7fa9\u7684 <code>memcpy<\/code>\u3002<\/li>\n<li><strong>\u6c38\u9060\u61f7\u7591\u786c\u9ad4\u7684\u7a69\u5b9a\u6027<\/strong>\uff1aWatchdog\u3001GPIO \u786c\u9ad4\u96fb\u64ca\u3001\u65b7\u7dda\u91cd\u9023\u72c0\u614b\u6a5f\uff0c\u662f\u5728\u5de5\u63a7\u73fe\u5834\u5b89\u7a69\u7761\u89ba\u7684\u552f\u4e00\u4f9d\u9760\u3002<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u300c\u7576\u786c\u9ad4\u6210\u672c\u88ab\u780d\u5230\u9aa8\u6298\uff0c\u5269\u4e0b\u7684\u6bcf\u4e00\u6beb\u79d2\u8207\u6bcf\u4e00 KB\uff0c\u90fd\u662f\u8edf\u9ad4\u67b6\u69cb\u5e2b\u7528\u547d\u63db\u4f86\u7684\u3002\u300d \u9019\u662f\u4e00\u500b\u95dc\u65bc\u5982\u4f55\u5728\u767e\u5143\u7d1a\u9ad8\u901a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[166],"tags":[180,217,218],"_links":{"self":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1101"}],"collection":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1101"}],"version-history":[{"count":3,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1101\/revisions"}],"predecessor-version":[{"id":1271,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1101\/revisions\/1271"}],"wp:attachment":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}