Android Profiler: มันคืออะไร, ความสามารถของ CPU, Memory และ Network

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-03-30 เวลาอ่าน: 9 นาที

Android Profiler คือชุดเครื่องมือที่รวมอยู่ใน Android Studio สำหรับตรวจสอบประสิทธิภาพของแอปพลิเคชันแบบเรียลไทม์ สามารถติดตามโหลด CPU การใช้หน่วยความจำ ปริมาณการใช้งานเครือข่าย และการใช้พลังงานโดยไม่ต้องติดตั้งไลบรารีของบุคคลที่สาม ตามข้อมูลจาก Android Developers โปรไฟเลอร์ถูกรวมเข้ากับ IDE โดยตรงและให้เมตริกที่มีความแม่นยำระดับมิลลิวินาทีสำหรับทุกกระบวนการบนอุปกรณ์ที่เชื่อมต่อ

ประเด็นสำคัญ

  • Android Profiler — โปรไฟเลอร์ในตัวของ Android Studio สำหรับ CPU, Memory, Network และ Energy
  • CPU Profiler แสดงโหลดโปรเซสเซอร์ตามเธรดพร้อมแผนผังการเรียกเมธอดที่แม่นยำ
  • Memory Profiler ติดตาม Java Heap, Native Heap และ Graphics Memory แบบเรียลไทม์
  • Network Profiler บันทึกทุกคำขอ HTTP พร้อมขนาด ระยะเวลา และส่วนหัว
  • Energy Profiler ระบุการดำเนินการที่ทำให้แบตเตอรี่ของอุปกรณ์หมดมากเกินไป

Android Profiler คืออะไร?

Android Profiler เป็นส่วนประกอบของ Android Studio ที่แทนที่ Android Monitor และ DDMS แบบเก่า โดยให้อินเทอร์เฟซแบบรวมสำหรับการโปรไฟล์ทุกด้านของแอปพลิเคชัน: CPU Profiler สำหรับการวิเคราะห์โปรเซสเซอร์, Memory Profiler สำหรับการทำงานกับหน่วยความจำ, Network Profiler สำหรับคำขอเครือข่าย และ Energy Profiler สำหรับการใช้พลังงาน ข้อมูลจะถูกรวบรวมโดยอัตโนมัติเมื่อเริ่มต้นแอปพลิเคชันผ่าน Android Studio

โปรไฟเลอร์ทำงานทั้งบนอีมูเลเตอร์และอุปกรณ์จริงที่เชื่อมต่อผ่าน USB ตามข้อมูลจาก Google I/O 2023 Android Profiler ถูกใช้ในกว่า 70% ของโครงการ Android และถือเป็นเครื่องมือมาตรฐานสำหรับการวินิจฉัยประสิทธิภาพ ข้อได้เปรียบหลักเหนือโซลูชันของบุคคลที่สามคือการรวมแบบศูนย์: ไม่จำเป็นต้องเพิ่ม dependencies ใน build.gradle หรือแก้ไขโค้ดของแอปพลิเคชัน

สถาปัตยกรรมของ Android Profiler สร้างขึ้นบน Perfetto — ตัวติดตามระบบของ Android ที่รวบรวมข้อมูลในระดับเคอร์เนลและแอปพลิเคชัน Perfetto รับประกันโอเวอร์เฮดขั้นต่ำ (น้อยกว่า 1% ของ CPU) และรองรับการบันทึกระยะยาวสูงสุด 30 นาที ซึ่งช่วยให้สามารถโปรไฟล์ได้ไม่เพียงแต่การดำเนินการที่รวดเร็ว แต่ยังรวมถึงสถานการณ์ระยะยาว — การเปลี่ยนระหว่างหน้าจอ การซิงค์พื้นหลัง การใช้หน่วยความจำระหว่างการใช้งานหนึ่งชั่วโมง

Android Profiler รวบรวมข้อมูลอะไรบ้าง

โปรไฟเลอร์รวบรวมข้อมูลสี่ประเภท: CPU — โหลดของแต่ละคอร์และเธรด, Memory — Java Heap, Native Heap, Stack, Graphics, Network — คำขอขาเข้าและขาออกทั้งหมด, Energy — หมวดหมู่การใช้พลังงาน (Idle, Light, Medium, Heavy) ข้อมูลถูกซิงค์บนไทม์ไลน์ — คุณสามารถดูพร้อมกันว่าการเปลี่ยนแปลงของ CPU ส่งผลต่อหน่วยความจำและการใช้พลังงานอย่างไร

CPU Profiler: การวิเคราะห์โปรเซสเซอร์และเธรด

CPU Profiler แสดงโหลดโปรเซสเซอร์แบบเรียลไทม์บนไทม์ไลน์ โดยแบ่งตามเธรดของแอปพลิเคชัน แต่ละเธรดแสดงด้วยเส้นหรือพื้นที่สี — ยิ่งพื้นที่กว้างเท่าไหร่ เธรดยิ่งใช้เวลาโปรเซสเซอร์มากขึ้นเท่านั้น พื้นที่สีแดงหมายถึงการทำงานของแอปพลิเคชัน สีน้ำเงินหมายถึงการเรียกระบบ สีเทาหมายถึงการรอ

สำหรับการวิเคราะห์โดยละเอียด CPU Profiler รองรับสามโหมดการบันทึก: Trace Java Methods (การติดตามเมธอด Java ทั้งหมด), Trace C/C++ Functions (การติดตามฟังก์ชันเนทีฟ NDK) และ Sample Java Methods (การสุ่มตัวอย่าง โหมดแนะนำ) การสุ่มตัวอย่างให้โอเวอร์เฮดต่ำที่สุดและเหมาะสำหรับการโปรไฟล์ประจำวัน ในขณะที่การติดตามเต็มรูปแบบใช้สำหรับค้นหาปัญหาที่ซับซ้อน

kotlin
// ตัวอย่าง: การวิเคราะฮ์ CPU Profiler จะแสดงเมธอดนี้เป็นจุดคอปคอ
class DataProcessor {
    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        // CPU Profiler จะแสดงโหลด CPU สูงใน inBackgroundThread
        return withContext(Dispatchers.Default) {
            items.map { it.computeHeavyTransformation() }
        }
    }
}

// คำแนะนำหลังการโปรไฟล์:
// computeHeavyTransformation ใช้เวลา 80% — แคชผลลัพธ์
class DataProcessorOptimized {
    private val cache = LruCache<String, Result>(100)

    suspend fun processLargeDataset(items: List<Item>): List<Result> {
        return withContext(Dispatchers.Default) {
            items.mapNotNull { cache.get(it.id) ?: it.computeHeavyTransformation().also { cache.put(it.id, it) } }
        }
    }
}

หลังจากการบันทึก CPU Profiler จะแสดง Top-Down Tree — แผนผังการเรียกพร้อมเวลาดำเนินการของแต่ละเมธอด ให้ความสนใจกับคอลัมน์ Self Time/Total: หาก Self Time ของเมธอดมากกว่า 16 ms และถูกเรียกจากเธรด UI — นั่นคือการตกเฟรมที่แน่นอน วิธีแก้ไขคือย้ายการคำนวณหนักไปยังเธรดพื้นหลังผ่าน Dispatchers.IO หรือ Default

โหมดการติดตาม CPU

Sample Java Methods — โหมดแนะนำสำหรับการโปรไฟล์ประจำวันโดยมีโอเวอร์เฮด 3–5% Trace Java Methods — การติดตามทุกการเรียกอย่างสมบูรณ์ โอเวอร์เฮดสูงถึง 15% ใช้สำหรับการบันทึกสั้น (5–10 วินาที) Trace C/C++ Functions — การติดตามโค้ด NDK ผ่าน Linux Perf ขาดไม่ได้สำหรับการวิเคราะห์เกมและไลบรารี C++ เปลี่ยนโหมดตามประเภทของปัญหา

Memory Profiler: การทำงานกับหน่วยความจำและการค้นหารั่วไหล

Memory Profiler ติดตามทุกหมวดหมู่หน่วยความจำของแอปพลิเคชัน: Java Heap (วัตถุ JVM), Native Heap (การจัดสรร C/C++ ผ่าน JNI), Stack (สแต็กเธรด) และ Graphics (พื้นผิว, บัฟเฟอร์ GPU) การแสดงผลหลักคือกราฟเวลาของการใช้หน่วยความจำ โดยแต่ละหมวดหมู่แสดงด้วยสีของตัวเอง หากกราฟไม่ลดลงหลังจากการเก็บขยะ — ให้สงสัยว่ารั่วไหล

ในการค้นหารั่วไหล ให้ใช้ฟังก์ชัน Capture Heap Dump ในขณะที่ดัมพ์ Android Profiler จะหยุดแอปพลิเคชันประมาณ 100 ms และสร้างไฟล์ HPROF — ภาพรวมทั้งหมดของวัตถุที่มีชีวิตทั้งหมดใน Java Heap หลังจากเปิดดัมพ์ คุณสามารถเรียงลำดับวัตถุตาม Retained Size (ปริมาณหน่วยความจำที่จะว่างเมื่อลบวัตถุ) และค้นหาอินสแตนซ์ของ Activity, Fragment หรือ Bitmap ที่ควรถูกทำลาย

ตามข้อมูลจาก Google I/O 2022 Memory Profiler ร่วมกับ LeakCanary ครอบคลุม 95% ของสถานการณ์การตรวจจับการรั่วไหลของหน่วยความจำบน Android LeakCanary ทำงานโดยอัตโนมัติ — ตรวจจับการรั่วไหลในพื้นหลัง Memory Profiler จำเป็นสำหรับการวิเคราะห์ด้วยตนเอง: คุณเห็นภาพรวมทั้งหมดของการจัดสรร ไม่ใช่แค่การรั่วไหล

หมวดหมู่หน่วยความจำคำอธิบายขนาดทั่วไป
Java Heapฮีป JVM: วัตถุ Kotlin/Java5–200 MB
Native Heapการจัดสรรผ่าน JNI, NDK1–100 MB
Graphicsพื้นผิว, บัฟเฟอร์ GPU10–200 MB
Stackสแต็กของทุกเธรด1–10 MB

วิธีตีความดัมพ์ HPROF

หลังจากจับภาพดัมพ์ ให้เรียงลำดับวัตถุตาม Retained Size — นี่คือปริมาณหน่วยความจำที่จะว่างเมื่อลบวัตถุ ค้นหาอินสแตนซ์ของ Activity, Fragment และ Bitmap ที่มี Retained Size ใหญ่ซึ่งไม่ควรอยู่ในหน่วยความจำ ไปที่แท็บ Reference Tree เพื่อดูห่วงโซ่การอ้างอิงที่ยึดวัตถุไว้ — โดยทั่วไปแล้วเป็นฟิลด์สแตติกของซิงเกิลตันหรือ callback ที่ไม่ได้ทำความสะอาด เมตริกที่สำคัญคือ อัตราการจัดสรร (จำนวนการจัดสรรต่อวินาที) หากอัตราการจัดสรรเกิน 10,000 วัตถุ/วินาที แอปพลิเคชันใช้เวลามากเกินไปในการสร้างและลบวัตถุชั่วคราว ซึ่งทำให้ GC ทำงานหนักและเกิดไมโครฟรีซ ในกรณีนี้ ให้ใช้เครื่องมือ View Inspector และค้นหาตำแหน่งที่มีการสร้างวัตถุบ่อยครั้งในลูป

Network Profiler: การตรวจสอบคำขอเครือข่าย

Network Profiler แสดงคำขอเครือข่ายทั้งหมดของแอปพลิเคชันแบบเรียลไทม์บนไทม์ไลน์ แต่ละคำขอแสดงเป็นแถบแนวนอน — ความยาวสอดคล้องกับเวลาดำเนินการ สีสอดคล้องกับประเภทคำขอ (GET, POST, PUT, DELETE) การเลื่อนสเกลช่วยให้เห็นว่าคำขอถูกกระจายตามเวลาอย่างไรและซ้ำซ้อนหรือไม่

ไลบรารียอดนิยมทั้งหมดได้รับการสนับสนุน: OkHttp, Retrofit, Volley, Ktor สำหรับ Ktor และ OkHttp โปรไฟเลอร์จะแสดงสแต็กการเรียกทั้งหมด รวมถึงอินเตอร์เซปเตอร์และตัวแปลง สำหรับแต่ละคำขอ ส่วนหัวของคำขอ และ ส่วนหัวของการตอบสนอง เนื้อหาการตอบสนอง (สูงสุด 1 MB), รหัสสถานะ และระยะเวลาพร้อมให้ใช้งาน

ปัญหาทั่วไปที่ Network Profiler ระบุ: ขาดแคช (URL เดียวกันถูกขอทุกครั้งที่เปิด), คำขอซ้ำซ้อน (สองคอมโพเนนต์โหลดข้อมูลเดียวกันพร้อมกัน), ขนาดการตอบสนองมากเกินไป (เซิร์ฟเวอร์ส่ง 5 MB ในเมื่อต้องการ 50 KB) Network Profiler ช่วยให้เห็นปัญหาเหล่านี้ได้เพียงแค่เหลือบดูไทม์ไลน์

สำหรับการจำลองเครือข่ายช้า ให้ใช้ Network Conditioning ใน Android Studio — สามารถจำกัดแบนด์วิธเป็น 3G/2G และเพิ่มความหน่วงได้ ซึ่งมีความสำคัญอย่างยิ่งสำหรับการทดสอบพฤติกรรมของแอปพลิเคชันในสภาพเครือข่ายที่ไม่ดี โดยเฉพาะสำหรับแอปพลิเคชันที่ทำงานในภูมิภาคที่มีอินเทอร์เน็ตไม่เสถียร

Energy Profiler: การวิเคราะห์การใช้พลังงาน

Energy Profiler ประเมินผลกระทบของแอปพลิเคชันต่อแบตเตอรี่ตามข้อมูล Perfetto เครื่องมือนี้ไม่ได้วัดการบริโภคจริงในหน่วยมิลลิแอมป์ แต่จำแนกแต่ละการดำเนินการออกเป็นหนึ่งในห้าหมวดหมู่การใช้พลังงาน: Idle, Light, Medium, High และ Overloaded ไทม์ไลน์ของ Energy Profiler จะถูกเน้นด้วยสี: เขียว (โหลดเบา), เหลือง (ปานกลาง), แดง (สูง)

สาเหตุหลักของโซนสีแดง: WakeLock (แอปพลิเคชันทำให้โปรเซสเซอร์ทำงานต่อ), ตำแหน่ง GPS (การขอพิกัดอย่างต่อเนื่องด้วยความแม่นยำสูง), การเชื่อมต่อ Keep-Alive (การแลกเปลี่ยนข้อมูลกับเซิร์ฟเวอร์บ่อยครั้ง), การถ่ายโอนข้อมูลขนาดใหญ่ (การส่งไฟล์, การสตรีม) Energy Profiler แสดงอย่างแม่นยำว่าการดำเนินการใดในช่วงเวลาใดที่ทำให้เกิดจุดสูงสุดของการใช้พลังงาน

ตามข้อมูลจาก Android Developers แอปพลิเคชันทั่วไปไม่ควรใช้เวลามากกว่า 5% ในหมวดหมู่ High หาก Energy Profiler แสดงโซนสีแดงนานกว่า 10% ของเวลาโปรไฟล์ — แอปพลิเคชันจะไม่ผ่านการตรวจสอบตามเกณฑ์ Battery Drain คำแนะนำ — ใช้ WorkManager สำหรับงานพื้นหลัง จำกัดคำขอตำแหน่งให้มีความแม่นยำขั้นต่ำที่จำเป็น และรวมคำขอเครือข่ายเป็นชุด

วิธีใช้ Android Profiler: คู่มือปฏิบัติ

การเริ่มต้น Android Profiler ทำได้ด้วยคลิกเดียว: ใน Android Studio เปิด View → Tool Windows → Profiler หรือดับเบิลคลิกที่ไอคอน Profiler ในแผงด้านขวา หลังจากเริ่มต้นแอปพลิเคชันบนอุปกรณ์ที่เชื่อมต่อ Android Studio จะเชื่อมต่อกับกระบวนการโดยอัตโนมัติและเริ่มรวบรวมข้อมูล บนไทม์ไลน์ กราฟ CPU, Memory, Network และ Energy จะปรากฏขึ้นทันที

สำหรับการวิเคราะห์โดยละเอียด เลือกแท็บที่ต้องการ (CPU, Memory, Network หรือ Energy) และเริ่มการบันทึก สำหรับ CPU ฉันแนะนำโหมด Sample Java Methods โดยมีระยะเวลาการบันทึก 30 วินาที — เพียงพอสำหรับสถานการณ์ทั่วไป สำหรับ Memory — ดัมพ์ฮีปหลังจากการดำเนินการสถานการณ์ (Capture Heap Dump) สำหรับ Network การบันทึกจะเริ่มโดยอัตโนมัติ เพียงกดปุ่ม Stop หลังจากเสร็จสิ้นสถานการณ์

หลังจากหยุดการบันทึก ให้ส่งออกข้อมูล: File → Save As บันทึกเซสชันทั้งหมดในไฟล์ .perf สะดวกสำหรับการเปรียบเทียบเมตริกก่อนและหลังการปรับแต่ง สร้างเซสชันพื้นฐานในเวอร์ชันเสถียรแรกและเปรียบเทียบแต่ละเซสชันใหม่กับเซสชันนั้น — นี่เป็นวิธีเดียวในการประเมินการเปลี่ยนแปลงประสิทธิภาพอย่างเป็นกลาง

การทำงานอัตโนมัติของการโปรไฟล์ใน CI

Android Profiler สามารถเรียกใช้จากบรรทัดคำสั่งผ่าน Android Studio CLI และ Firebase Test Lab Firebase Test Lab รองรับการโปรไฟล์ประสิทธิภาพเป็นส่วนหนึ่งของการทดสอบ UI: คุณจะได้รับเมตริก CPU, Memory และ Network พร้อมกับผลการทดสอบ กำหนดค่าไปป์ไลน์เพื่อให้เมื่อเมตริกลดลง 10% เมื่อเทียบกับพื้นฐาน ไปป์ไลน์ CI จะถูกบล็อกจนกว่าจะตรวจสอบโดยนักพัฒนา

คำถามที่พบบ่อย

Android Profiler ทำให้แอปพลิเคชันช้าลงหรือไม่?

ผลกระทบน้อยมาก Android Profiler ใช้ Perfetto สำหรับการรวบรวมข้อมูล ซึ่งเพิ่มโอเวอร์เฮด CPU น้อยกว่า 1% ในโหมด Sample Java Methods โอเวอร์เฮดประมาณ 3–5% ซึ่งไม่สำคัญสำหรับการโปรไฟล์สถานการณ์ การติดตามเมธอดแบบเต็มอาจให้โอเวอร์เฮดสูงถึง 15% จึงใช้สำหรับการบันทึกสั้นเท่านั้น

สามารถโปรไฟล์แอปพลิเคชันโดยไม่มี Android Studio ได้หรือไม่?

ได้ การติดตามระบบสามารถบันทึกผ่าน Perfetto CLI ได้โดยตรงจากอุปกรณ์: adb shell perfetto --out /data/local/tmp/trace.perf จากนั้นเปิดไฟล์ในอินเทอร์เฟซ Perfetto UI (ui.perfetto.dev) หรือนำเข้าใน Android Studio เพื่อดูพร้อมมาร์กอัปเต็มของแอปพลิเคชัน

Network Profiler แตกต่างจาก Charles Proxy อย่างไร?

Android Profiler เป็นเครื่องมือระบบที่ไม่ต้องกำหนดค่า proxy แสดงคำขอโดยตรงใน IDE ในบริบทของประสิทธิภาพ Charles Proxy เป็นพร็อกซีเซิร์ฟเวอร์ภายนอกที่ให้การวิเคราะห์โดยละเอียดมากขึ้น (การสกัดกั้นการรับส่งข้อมูล การแก้ไขคำขอ การส่งซ้ำ) สำหรับการโปรไฟล์ประสิทธิภาพ ให้ใช้ Android Profiler สำหรับการวิเคราะห์สัญญา API ให้ใช้ Charles

วิธีค้นหาการรั่วไหลของหน่วยความจำผ่าน Memory Profiler?

ทำดัมพ์ฮีปก่อนดำเนินการสถานการณ์ (เช่น ก่อนเปิด Activity) ดำเนินการสถานการณ์ — เปิด Activity และปิด ทำดัมพ์ที่สอง เปรียบเทียบจำนวนอินสแตนซ์ Activity ที่มีชีวิต: ถ้าในดัมพ์ที่สองมีมากกว่า — รั่วไหล เรียงตาม Retained Size ค้นหา Activity ที่เกินมาและดู Reference Tree เพื่อหาสาเหตุ

ทำไม Energy Profiler ไม่พร้อมใช้งานบนบางอุปกรณ์?

Energy Profiler ต้องการการสนับสนุน Power Profiles ในระดับอุปกรณ์และ Android 8.0+ บนอีมูเลเตอร์และเฟิร์มแวร์บางตัว (โดยเฉพาะของจีน) ข้อมูลอาจไม่มี วิธีแก้ไข — โปรไฟล์การใช้พลังงานบนอุปกรณ์อ้างอิง Pixel หรือ Samsung ที่มีเฟิร์มแวร์ Android แท้

สรุป

  • Android Profiler — โปรไฟเลอร์ในตัวของ Android Studio สำหรับตรวจสอบ CPU, Memory, Network และ Energy
  • CPU Profiler วิเคราะห์โหลดของคอร์และเธรดโดยใช้การติดตาม Perfetto โดยมีโอเวอร์เฮดน้อยกว่า 1%
  • Memory Profiler ติดตาม Java Heap, Native Heap, Graphics และ Stack พร้อมรองรับดัมพ์ HPROF
  • Network Profiler บันทึกคำขอทั้งหมดของ OkHttp, Retrofit และ Ktor พร้อมส่วนหัว เนื้อหา และระยะเวลา
  • Energy Profiler จำแนกการใช้พลังงานของแอปพลิเคชันเป็นหมวดหมู่ตั้งแต่ Idle ถึง Overloaded
  • โปรไฟเลอร์ทำงานโดยไม่ต้องแก้ไขโค้ดแอปพลิเคชัน — การรวมแบบศูนย์
  • รวมการโปรไฟล์ใน CI ผ่าน Firebase Test Lab และเก็บพื้นฐานสำหรับแต่ละรุ่น

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม