- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试为 Android 创建缓存图像系统,但内存消耗越来越大。我浏览了 Android website对于一些想法,但问题只是不想消失。
下面是我从 SD 卡获取图像,设置它然后销毁的代码。我做错了什么?
WeakReference newImageRef;
public void setImageFromFile(File source){
if(source.exists()){
Bitmap newImage = BitmapFactory.decodeFile(source.getAbsolutePath());
newImageRef = new WeakReference(newImage);
if(newImage != null){
this.setImageBitmap(newImage);
}
}
}
@Ghi đè
protected void onDetachedFromWindow() {
Bitmap newImage = newImageRef.get();
if (newImage != null) {
newImage.recycle();
newImage = null;
}
Drawable drawable = getDrawable();
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
if (bitmap != null){
bitmap.recycle();
}
}
this.setImageResource(0);
newImage = null;
newImageRef = null;
Hệ thống. gc();
super.onDetachedFromWindow();
}
câu trả lời hay nhất
如果您使用的是 Android 版本 >3.0,则不必调用 recycle()
,因为 gc 最终会自行清理位图,只要没有对它的引用。所以删除回收调用是安全的。他们在这里什么都不做。
您发布的代码看起来很整洁,但您确定泄漏没有发生在其他地方吗?使用 Android Memory Analyzer 工具查看发生泄漏的位置,然后发布信息。
祝你好运。
关于Android位图内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17015448/
IntentReceiver bị rò rỉ do onDetachedFromWindow không được gọi trong một số trường hợp. @Override khoảng trống được bảo vệ trênDetachedFromWind
Được rồi, tôi gặp khó khăn trong việc theo dõi rò rỉ bộ nhớ này. Tôi không thấy bất kỳ rò rỉ bộ nhớ nào khi chạy tập lệnh này, nhưng objectalloc của tôi đang tăng lên. Dụng cụ trỏ tới CGBitmapContextCreateImage >
Tôi đã viết mã kiểm tra để kiểm tra cách sử dụng Instrument(Leaks). Tôi đã tạo một ứng dụng Chế độ xem duy nhất và sau khi nhấp vào nút, tôi tải Chế độ xem mới như thế này... - (IBAction)btn_clk
Tôi đang sử dụng mã đơn giản này và quan sát việc sử dụng bộ nhớ ngày càng tăng một cách đơn điệu. Tôi đang sử dụng mô-đun nhỏ này để chuyển nội dung vào đĩa. Tôi quan sát thấy rằng nó xảy ra với chuỗi unicode nhưng không xảy ra với số nguyên, tôi có làm gì sai không? Khi tôi làm: >>> từ bạn
Tôi có mã bị rò rỉ sau đây. Theo Instruments, rò rỉ là đối tượng rssParser. Tôi đã "làm mới" nguồn cấp dữ liệu XML, nó chạy khối và xảy ra rò rỉ... file.h @interface
Tôi đã tìm thấy rò rỉ bộ nhớ trong đoạn mã sau. Tôi đã viết NSFileManager *fileManager=[[NSFileManager alloc] init];
Vì vậy, tôi đang phát triển trò chơi rts HTML5/javascript. Quan sát thấy có nhiều âm thanh phát ra liên tục. Vì vậy, điều xảy ra với tôi là sau một thời gian, nó có vẻ như "bị hỏng" và mọi thứ trên tab trình duyệt này đều ngừng hoạt động. Tôi chỉ có thể vượt qua
Dưới đây là một đoạn mã tôi đang sử dụng và đầu ra của nó. $handle của tôi; $enterCount = Devel::Leak::NoteSV($handle); print "$date entry $en);
Theo dõi bài đăng này về rò rỉ quy trình hoạt động, https://www.ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sende
Tôi đang tự hỏi tại sao tôi ngẫu nhiên nhận được kết quả sau khi thực hiện ./a.out. Có ý kiến gì tôi đang làm sai không? Cảm ơn bạn http://img710.imageshack.us/img710/8708/trasht.png Câu trả lời hay nhất là đúng
Tôi đang phát triển một ứng dụng trong Swift và tôi nhận thấy bộ nhớ tăng vọt sau khi hiển thị ViewController tùy chỉnh đã ghi lại mã QR mà tôi ghép lại. Mã này về cơ bản dựa trên ví dụ sau: http://www.appc
Dưới đây là một đoạn mã javascript của tôi. Nó không chạy như mong đợi, xin hãy giúp tôi khắc phục điều này. hàm getCurrentLocation() { console.log("insi
Chúng tôi đã triển khai 3 nhà môi giới Kafka 0.10.1.0 trong môi trường sản xuất. Một số ứng dụng nhúng Nhà sản xuất Kafka, gửi nhật ký ứng dụng đến một chủ đề. Chủ đề có 10 phân vùng và hệ số nhân bản là 3. chúng tôi quan sát
Tôi đang sử dụng công cụ để phát hiện một số rò rỉ nhưng có một số rò rỉ mà tôi không thể giải quyết; NSMutableString *textedetails = [[NSMutableString alloc] init];
Nếu tôi kiểm tra mã của mình bằng công cụ hiệu suất - rò rỉ, nó sẽ không phát hiện bất kỳ rò rỉ nào. Điều này có nghĩa là mã không bị rò rỉ bất kỳ bộ nhớ nào? Tôi có một chiếc iPhone đã jailbreak và tôi có thể theo dõi bộ nhớ khả dụng. Nếu có ai biết thì đó là SBSinstall. tôi kiểm tra
Tôi đang gặp sự cố lớn khi tải hình ảnh từ Sổ địa chỉ, bên dưới tôi đã dán mã của mình. Dữ liệu hình ảnh này không bao giờ được giải phóng, trên Công cụ phân bổ của tôi, có vẻ như nó luôn ở trong bộ nhớ
- (NSMutableArray *)getArrayValue:(NSArray *)mảng{ NSMutableArray *valueArray = [NSMutableArra
Instruments nói rằng đây là một sự rò rỉ, bạn có ý kiến gì không? Tôi giải phóng đối tượng biến ở cuối vòng lặp for ở đầu phương thức trên, đây là cách tôi đặt đối tượng biến, tức là autorelease *varia;
Tôi đang theo dõi rò rỉ bộ nhớ trong ứng dụng iOS của mình và tôi gặp phải một rò rỉ kỳ lạ khiến ứng dụng của tôi gặp sự cố... Khung chịu trách nhiệm là: CGImageMergeXMPPropsWhithLegacyProps. Vào một lúc nào đó, tôi nên
Tôi đang cố gắng sử dụng NSOperationQueue để thực thi một phương thức trong luồng nền như thế này: NSOperationQueue *queue = [NSOperationQueue new];
Tôi là một lập trình viên xuất sắc, rất giỏi!