2014-08-27 16 views
7

Làm việc trên một dự án Qt kích thước trung bình mà chúng tôi nhận thấy, mức tiêu thụ bộ nhớ cao đáng ngạc nhiên khi không có nhiều hoạt động trên màn hình. Nỗ lực của tôi để tìm một loại memleak dẫn tôi đến macro CREATE_QML_OBJECT, trong đó các đối tượng thể hiện qml được tạo ra. Sau khi xóa tất cả các phần tử ui tùy chỉnh khỏi tệp qml đã tải và chỉ để lại bốn thứ cơ bản tôi nhận đượcQt Sử dụng bộ nhớ nhanh

Rectangle { 
    Button {} 
    CheckBox {} 
    Slider {} 
    TextField {} 
} 

Và điều này tiêu thụ khoảng ~ 1-1,5 MB.

Tôi đã có một cái nhìn tại dự án trình diễn QtQuick và điều tương tự nó có:

Gallery demo. Chỉ cần một loạt các điều khiển, 100 MB khi khởi động.

Same game demo. Trò chơi đơn giản, sau 5 phút chơi 256MB đã biến mất.

Tôi thực sự ngạc nhiên bởi thực tế là một ứng dụng QtQuick QML đơn giản có thể ăn lượng bộ nhớ khổng lồ. Có ai biết những gì gây ra phân bổ này và có cách nào để quản lý nó?

Mọi trợ giúp sẽ được đánh giá cao.


liên kết liên quan, đã không tìm thấy một câu trả lời có

QML big memory consumption?

Memory footprint of QML applications

Performance Considerations And Suggestions

+0

Thật lạ, các nhà phát triển KDE cho biết họ giảm mức tiêu thụ bộ nhớ với mức sử dụng QML cao hơn. – QtRoS

+0

Để gọi QML "bộ nhớ hog" sẽ là một lời khen. Nó còn tồi tệ hơn nhiều ... – dtech

Trả lời

2

của nó tất cả được quản lý bằng javascript thu gom rác thải. Vài điều cần cố gắng là:

1) Gọi gc() chỉ sau khi tải một mục ví dụ trên Component.onCompleted:

2) Tải các mục trên Loader. Bằng cách này, họ không nên ở trong bộ nhớ khi không sử dụng.

Những điều này không đảm bảo giảm dung lượng bộ nhớ nhưng có thể giúp ích một chút.

+0

Cảm ơn lời khuyên, nhưng có vẻ như cách Qt của nó nhanh chóng hoạt động. Rõ ràng dấu chân bộ nhớ cao không phải là một mối quan tâm cho đội ngũ phát triển. Có lẽ ý tưởng là bạn nên thực hiện một số phần nhỏ của giao diện người dùng của bạn trong qml. Tôi sẽ không khuyên bạn sử dụng qtquick-only cho một dự án lớn, các widget thuần túy hiệu quả hơn nhiều. – vim

Các vấn đề liên quan