private void showMemory() {
// 1.Internal Memory
// ActivityManager.MemoryInfo
ActivityManager actMgr = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
actMgr.getMemoryInfo(memoryInfo);
LogOut.out(this, "availMem=" + (memoryInfo.availMem >> 20) + "M");
LogOut.out(this, "threshold=" + (memoryInfo.threshold >> 20)
+ "M and isLowMemory=" + memoryInfo.lowMemory);
// Environment:Data
showEnvironment(Environment.getDataDirectory());
// Environment:System
showEnvironment(Environment.getRootDirectory());
// Environment:Cache
showEnvironment(Environment.getDownloadCacheDirectory());
}
private void showEnvironment(File path) {
LogOut.out(this, "AbsolutePath=" + path.getAbsolutePath() + " Path="
+ path.getPath());
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long avaiableBlocks = stat.getAvailableBlocks();
long avaiableSize = avaiableBlocks * blockSize;
long blockCount = stat.getBlockCount();
long blockAllSize = blockCount * blockSize;
LogOut.out(this, "avaiableSize=" + (avaiableSize >> 20) + "M");
LogOut.out(this, "blockAllSize=" + (blockAllSize >> 20) + "M");
}
Log信息为:
11-15 17:00:02.169: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->availMem=134M
11-15 17:00:02.169: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->threshold=16M and isLowMemory=false
11-15 17:00:02.179: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->AbsolutePath=/data Path=/data
11-15 17:00:02.179: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->avaiableSize=93M
11-15 17:00:02.179: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->blockAllSize=185M
11-15 17:00:02.179: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->AbsolutePath=/system Path=/system
11-15 17:00:02.179: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->avaiableSize=141M
11-15 17:00:02.189: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->blockAllSize=240M
11-15 17:00:02.189: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->AbsolutePath=/cache Path=/cache
11-15 17:00:02.189: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->avaiableSize=5M
11-15 17:00:02.189: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->blockAllSize=40M
而我用一个工具测的数据则是:
133.1M可用内存,54% Used 46% Free
到底如何确定当前系统可用内存与总内存大小呢?谢谢...
6 个解决方案
#1
11-15 17:00:02.169: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->availMem=134M
这个就是吧。
最好在真机上测,不要在模拟器上测。
这个就是吧。
最好在真机上测,不要在模拟器上测。
#2
晕,这是真机的log
那如何获取总内存大小呢?谢谢...
#4
请问你给的资料对这个问题有新的帮助吗?
你发的链接中
static public long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
static public long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
static public long getAvailableExternalMemorySize() {
if(externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
} else {
return ERROR;
}
}
这三个方法所显示的内存大小的方法和我发的代码是一样的
// Environment:Data
showEnvironment(Environment.getDataDirectory());
// Environment:System
showEnvironment(Environment.getRootDirectory());
我没期望也没权力要求懂的人必须来回帖子,但我希望回我帖子的人在回帖的时候已经明白了我的问题。
#5
已解决
adb shell下命令
详细见:
http://blog.csdn.net/sodino/archive/2010/10/14/5941308.aspx
看来自己也晕了,问的问题之前已经有接触过了,现在才反应过来。算是温故知新吧。
adb shell下命令
cat /proc/meminfo
详细见:
http://blog.csdn.net/sodino/archive/2010/10/14/5941308.aspx
看来自己也晕了,问的问题之前已经有接触过了,现在才反应过来。算是温故知新吧。
#6
已解决的话,收垃圾来喽....
#1
11-15 17:00:02.169: DEBUG/ANDROID_INFO(1827): lab.sodino.task.TaskAct->availMem=134M
这个就是吧。
最好在真机上测,不要在模拟器上测。
这个就是吧。
最好在真机上测,不要在模拟器上测。
#2
晕,这是真机的log
那如何获取总内存大小呢?谢谢...
#3
#4
请问你给的资料对这个问题有新的帮助吗?
你发的链接中
static public long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
static public long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
static public long getAvailableExternalMemorySize() {
if(externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
} else {
return ERROR;
}
}
这三个方法所显示的内存大小的方法和我发的代码是一样的
// Environment:Data
showEnvironment(Environment.getDataDirectory());
// Environment:System
showEnvironment(Environment.getRootDirectory());
我没期望也没权力要求懂的人必须来回帖子,但我希望回我帖子的人在回帖的时候已经明白了我的问题。
#5
已解决
adb shell下命令
详细见:
http://blog.csdn.net/sodino/archive/2010/10/14/5941308.aspx
看来自己也晕了,问的问题之前已经有接触过了,现在才反应过来。算是温故知新吧。
adb shell下命令
cat /proc/meminfo
详细见:
http://blog.csdn.net/sodino/archive/2010/10/14/5941308.aspx
看来自己也晕了,问的问题之前已经有接触过了,现在才反应过来。算是温故知新吧。
#6
已解决的话,收垃圾来喽....