Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查android堆大小_Java_Android_Air Native Extension - Fatal编程技术网

Java 检查android堆大小

Java 检查android堆大小,java,android,air-native-extension,Java,Android,Air Native Extension,有没有一种好方法可以检查Java中设备的总堆大小中有多少内存? 我的应用程序是用AdobeAIR编写的,它使用本机Java扩展从SD卡加载多个图像。我找到这段代码来检查位图是否可以加载到内存中: public boolean checkBitmapFitsInMemory(long bmpwidth,long bmpheight, int bmpdensity ){ long reqsize=bmpwidth*bmpheight*bmpdensity; long

有没有一种好方法可以检查Java中设备的总堆大小中有多少内存? 我的应用程序是用AdobeAIR编写的,它使用本机Java扩展从SD卡加载多个图像。我找到这段代码来检查位图是否可以加载到内存中:

public boolean checkBitmapFitsInMemory(long bmpwidth,long bmpheight, int bmpdensity ){

        long reqsize=bmpwidth*bmpheight*bmpdensity;
        long allocNativeHeap = Debug.getNativeHeapAllocatedSize();
        final long heapPad=(long)Math.max(4*1024*1024,Runtime.getRuntime().maxMemory()*0.1);
        if ((reqsize + allocNativeHeap + heapPad) >= Runtime.getRuntime().maxMemory())
        {
            return false;
        }
        return true;

    }
然而,在我的星系S2上,它似乎被完全忽略了。可能是因为该应用程序由两部分组成——一部分是Java,另一部分是AdobeAIR。在将图像加载到应用程序内存之前,是否还有其他内存值需要检查? 谢谢大家!

退房

调用
Runtime.getRuntime().freemory()
返回运行中的应用程序可用的内存资源


另外,

谢谢。我刚刚从日志中检查了freeMemory(),它没有意义。它会随着每个加载的图像而变化,但有时它会增长!在加载第一幅图像之前是1070032,加载20幅图像之后是1698688。有点令人沮丧,但这可能是真的。您的应用程序不是唯一一个使用内存的应用程序,是吗?因此,在我的情况下,它是不实用的。我需要知道,当下一个图像加载到MemoryId时,操作系统会关闭我的应用程序吗?你检查了我在最后一行中发布的另一个链接吗?我再次检查了第一个链接,似乎没有问题:Runtime.getRuntime().totalMemory()和Runtime.getRuntime().maxMemory()