ไม่ทราบว่ามีคนเคยติด ปัญหา Memory Leaks หรือเปล่าครับ
ขอคำแนะนำด้วยครับ เช่น วิธีการดูว่า app เราใช้ memory ไปเท่าไร ใช้ Tool ตัวไหน
และวิธีการจัดการ ทำเหมาะสม
ผมใช้ Os Kubuntu 11.04 , eclipse Version: Indigo Release
ขอบคุณครับ
ไม่ทราบว่ามีคนเคยติด ปัญหา Memory Leaks หรือเปล่าครับ
ขอคำแนะนำด้วยครับ เช่น วิธีการดูว่า app เราใช้ memory ไปเท่าไร ใช้ Tool ตัวไหน
และวิธีการจัดการ ทำเหมาะสม
ผมใช้ Os Kubuntu 11.04 , eclipse Version: Indigo Release
ขอบคุณครับ
ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบายความเป็นส่วนตัว และการใช้คุกกี้ของเราคลิก
คุกกี้เหล่านี้มีความสำคัญต่อการให้บริการบนเว็บไซต์แก่คุณ และเพื่อให้คุณสามารถใช้คุณลักษณะบางอย่างได้ คุกกี้เหล่านี้ช่วยในการยืนยันตัวบุคคลของผู้ใช้งานและช่วยป้องกันการปลอมแปลงบัญชีผู้ใช้งาน หากไม่มีคุกกี้เหล่านี้เราอาจไม่สามารถให้บริการแก่คุณได้ เราใช้คุกกี้ดังกล่าวนี้เพื่อให้บริการแก่คุณ
แม้ว่าอาจเกิดคุกกี้ แต่อาจไม่สามารถบันทึกได้เนื่องจากมีสมุดบันทึกที่คุณสามารถอัปเดตได้เว็บไซต์นี้อาจมีคุกกี้หรืออาจเกิดคุกกี้ใหม่อีกครั้ง
ดูข้อมูลเพิ่มเติมคลิก
ถ้าหมายถึงเขียนโค๊ด และทดลองรัน
ถ้าต้องการเช็คว่ามีการ allocate memory ไปเท่าไร ให้ไปดูที่ DDMS ได้ครับ
ตามรูปนี้เลย
http://developer.android.com/resources/articles/images/ddms_allocation_trackerl.png
(หมายถึงอันนี้หรือเปล่า)
เมมรั่วหรือคับ
คือผมน่าจะจัดการกับ Memory ไม่ค่อยดีเท่าไร อะครับ
ตอนนี้ผมทำโปรเจค ประมาณว่าเป็น app อ่านหนังสือ ครับ
ก่อนอืมขอบอกขั้นตอนนะครับ
ส่วนของการพลิกหน้า คล้ายเราเปิดหนังสือ คือผมใช้ Open GL reader + GLSurfaceView
ขึ้นรูปอะครับ และ เจ้านายเขาต้องการ ให้อ่านหนังสือแบบ เร็วๆๆ นะครับ ผมก็เลยให้พวก Thread + Memory Cache + File Cache เข้ามาช่วยในเรื่อง (การโหลดไฟล์รอเพื่อจะอ่าน และเก็บไฟล์ที่เราเคยอ่านแล้วไว้ที่ memory) และที่นี้ผมรู้สึกว่า code มันเริ่มมาขึ้น การจัดการมันค่อยข้างยากขึ้นเริ่มอะครับ ที่นี้ผมเลยอยากทราบวิธีการ ดูว่าส่วนใหนใช้ memory ไปเท่าไร
ปัญหาคือ รัน app ใช้ memory มากไปอะครับ และทำให้ App มัน restart
ตอนนี้ แก้ปัญหา โดย (ไม่รู้ว่าถูกหรือปล่า จะการอ่าน en แบบ งูๆๆ ปลาๆๆ)
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unbindDrawables(findViewById(R.id.root_layout));
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { unbindDrawables(((ViewGroup) view).getChildAt(i)); } ((ViewGroup) view).removeAllViews(); } } เป็นการ เครียส์ GC ครับ คำถามที่อยากได้คำตอบ 1. มี Tool อะไรที่ทำหน้าที่เช็กการใช้ Memory ของ Android หรือเปล่าครับ หรือมี Tool อะไรแนะนำก็ยินดีครับ ขออธิบายแบบบ้าน ๆๆ นะครับ (ตอนเรียน เรียนไม่ค่อยเก่ง ทฤษฏี ครับ) จะเข้าจัยที่ผมอธิบายหรือเปล่า T - T ขอบคุณครับ
Tool ก็ตามข้างบน ในหน้า DDMS
ถ้ากินเมมเยอะก็ลดแคชลงมาหน่อยกะได้
อย่าแคชทีเดียวหมดเล่ม พอประมาณ
ข้าน้อย
ขอบคุณมากครับ
ผมมั่วเอานะ อย่าเชื่อมาก ฮ่าๆ
ลอง optimize code ดูคับ เราเขียนเอง เข้าใจไม่ยาก
มีปัญหาอะไรก็แก้กันไป ลดแคช เคลียร์เมม