Home > Flash/Flex/AIR, Optimization > Optimizing Mobile Content for the Adobe Flash Platform – Conserving memory (Final part)

Optimizing Mobile Content for the Adobe Flash Platform – Conserving memory (Final part)

Filters and dynamic bitmap unloading

-Điều duy nhất mà Adobe muốn khuyến cáo trong phần này là chúng ta nên hạn chế, ko quá lạm dụng các hiệu ứng filter khi có thể, đặc biệt là các hiệu ứng được xử lý thông qua Pixel Bender (chúng ta sẽ cùng thảo luận về Pixel Bender ở bài khác).

-Ở các phiên bản Flash Player trước, khi một filter được apply vào một đối tượng Display Object, thì Flash Player sẽ tạo ra 2 bitmap trong bộ nhớ, bitmap 1 là hình ảnh gốc của đối tượng,  bitmap 2 được tạo ra khi apply filter lên bitmap 1 (bitmap 2 là bitmap sẽ được hiển thị).

-Đối với các animation của đối tượng có filter hoặc animation thay đổi filter, thì lúc runtime Flash Player sẽ tạo 2 bitmap như trên ở mỗi frame hiện hành, ở frame đã chạy qua nó sẽ chỉ định cho Garbage Collection giải phóng 2 bitmap ra khỏi vùng nhớ. Điều này có nghĩa là nó không giải phóng tức thời các bitmap đã tạo ra trong animation, nó sẽ chiếm dụng bộ nhớ trong khoảng thời gian chờ Garbage Collection dọn dẹp. Do đó ta nên hạn chế sử dụng filter cho các animation.

-Khi filter của đối tượng được thay bitmap này sẽ được update lại để cho ra bitmap mới được apply filter mới. Xử lý này sẽ chiếm dụng CPU và 2 bitmap sẽ chiếm một vùng nhớ đáng kể trong bộ nhớ.

-Tuy nhiên trong Flash Player 10.1 giới thiệu một cách hoạt động khác nhằm tiết kiệm bộ nhớ và CPU: Nếu trong 30 giây sau khi khởi tạo 2 bitmap, filter không được sửa đổi thì Flash Player 10.1 sẽ giải phóng bitmap gốc (tức là bitmap version non-filtered trên hình), điều này tiết kiệm được 1/2 bộ nhớ khi vận hành filter. Vậy sau 30 giây mà ta thay đổi filter thì sao? Đơn giản là Flash Player sẽ tạo lại bitmap gốc từ đối tượng như đã làm lần đầu. Kỹ thuật này Adobe gọi là “dynamic bitmap unloading”, tất nhiên việc tạo lại bitmap gốc sẽ chiếm xử lý CPU hoặc GPU, do đó ta nên hạn chế thay đổi filter của đối tượng sau mỗi 30 giây.

-Như vậy trong Flash Player 10.1, xử lý filter sẽ cần CPU hoặc GPU hơn là RAM. Trong khi đối với các thiết bị như mobile, PC, laptop thì RAM lại khá nhiều, CPU hoặc GPU lại có thể hạn chế, đặc biệt là mobile. Vì vậy Adobe khuyên cáo chúng ta nên dùng bitmap đã có sẵn filter được làm từ công cụ khác như Photoshop, Illustrator, Firework . . . để CPU tránh tạo ra bitmap động trong vùng nhớ.

Direct mipmapping

Tìm hiểu kỹ thuật mipmapping ở đây Mipmapping

Using 3D effects

Flash 10 hỗ trợ engine 3D cho phép chúng ta transform đối tượng hiển thị, cũng như hoạt động của filter, nó cũng tạo ra 2 bitmap, 1 bitmap gốc lưu hình ảnh của đối tượng, bitmap thứ 2 là kết quả khi apply transform lên bitmap 1. Điều này cũng làm tiêu tốn bộ nhớ và xử lý CPU hoặc GPU, Flash 10.1 cũng dùng kỹ thuật dynamic bitmap unloading sau 30 giây sẽ tự động xóa bitmap gốc để tiết kiệm đc 1/2 vùng nhớ khi vận hành.

Khi chạy trên desktop thì Flash Player sẽ hỗ trợ anti-alias trong transform 3D, nhưng tính năng này sẽ không áp dụng trên Mobile để tránh quá tải CPU (Trước đây khi phát triển package Iphone, Adobe đã đưa tính năng này vào, nhưng giờ có lẽ package cho iphone đã đi vào dĩ vãng khi Apple lên tiếng cấm mọi ứng dụng port source mà không thông qua SDK của hãng)

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: