Tôi đã làm việc trên một trò chơi cho Android và gỡ lỗi nó trên N1 của tôi. Hiệu suất đã được vá lúc đầu. Sau đó tôi đã làm việc để dọn dẹp tất cả các phân bổ để ngăn chặn việc thu gom rác thải. Điều này cải thiện rất nhiều, nhưng tôi vẫn thấy một số bộ sưu tập rác xảy ra gây ra tạm dừng rất ngắn trong hoạt hình.Phát triển trò chơi Android và Bộ sưu tập rác
Sau khi kéo tóc ra một lúc, sau đó tôi nhận thấy các ID quá trình đang thực hiện thu thập rác (GC_FOR_MALLOC) không phải là id quá trình của tôi. Id quá trình thuộc về "Hệ thống Android" và android.process.acore (được xác định bằng cách sử dụng ứng dụng "Thông tin hệ thống Android" từ thị trường). Quá trình acore được gắn với một widget desktop gọi là đồng hồ kỹ thuật số. Tôi đã gỡ cài đặt tiện ích và gần như đã thực hiện nó thông qua toàn bộ trò chơi mà không bị tạm dừng. Có một tạm dừng rất ngắn cho GC cho "Hệ thống Android".
Xin lỗi vì lời giải thích dài, nhưng bây giờ cho câu hỏi của tôi:
- Làm thế nào mà các game khác không thỉnh thoảng có tạm dừng do quá trình hệ thống của GC (một cái gì đó ngoài tầm kiểm soát của nhà phát triển)?
- Dọc theo dòng câu hỏi đầu tiên, làm cách nào để xử lý một ứng dụng khác khiến GC làm chậm quá trình của tôi và gây trục trặc trong trò chơi của tôi?
Tôi chỉ cảm thấy có điều gì đó mà tôi đang bỏ lỡ vì các trò chơi khác không gặp vấn đề này.
Cảm ơn
Nếu ứng dụng của bạn nhạy cảm với bộ thu gom rác, bạn đang làm sai. – Falmarri
Bạn có thể có may mắn hơn tại http://gamedev.stackexchange.com/ cho các câu hỏi cụ thể về trò chơi dành cho nhà phát triển. Tôi không chắc có một câu trả lời dễ dàng cho điều này. Bạn không thể ngăn chặn gc, chỉ cần giảm thiểu chúng. 2.3 bao gồm gc đồng thời, nhưng điều đó không giúp bạn nhiều nếu bạn muốn nhắm mục tiêu các nền tảng trước đó. –