簡體   English   中英

在Android中動態分配內存

[英]Dynamic allocation of memory in Android

我在NDK代碼中動態分配內存,我嘗試了以下兩種方法:

1)

vector<char> buffer_; 
buffer_.resize(len_);

2)

char* buffer_; 
buffer_ = new char[len_];

len_是一個非常大的數字,在我的測試中是132710400,大約130 MB。 兩種方式都行! 當我在Android Monitor中檢查內存使用情況時,該內存僅使用了約30MB。 我知道分配的內存只是虛擬內存,可能不是真正從物理內存分配的。 但是我確定我已經從該內存中進行了讀寫,因此應該實際分配它。 我只想知道如何發生? Android Monitor出問題了嗎? 還是我不了解Android OS? 還是Android Monitor無法跟蹤本機代碼使用的內存?

您可以使用命令行工具查看您的進程正在使用多少虛擬內存和多少常駐內存。

首先,請確保您在AndroidManifest.xml中的應用程序標簽中包含android:debuggable="true"

然后在命令行上,可以使用adb執行shell命令。

$ adb shell run-as com.yourdomain.yourapp /system/bin/sh -c "ps aux"

第四列顯示虛擬大小,第五列顯示駐留集大小。 報告的大小以頁為單位,每個頁可能為4096字節。

如果new和vector之間的內存使用仍然存在,請添加一個memset(buffer_, 0, len_) ,它們應該相似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM