相关疑难解决方法(0)

如何在java中将字节大小转换为人类可读的格式?

如何在Java中将字节大小转换为人类可读的格式?像1024应该变成"1 Kb"而1024*1024应该变成"1 Mb".

我有点厌倦为每个项目编写这个实用工具方法.Apache Commons中是否有任何静态方法?

java formatting apache-commons

503
推荐指数
13
解决办法
20万
查看次数

在Android中获取内存使用情况

是否有任何API可以让我们获得android的CPU或内存使用?

我试过一个代码如下:

package com.infostretch.mainactivity;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class CPULoad 
{
    long total = 0;
    long idle = 0;

    float usage = 0;

    public CPULoad()
    {
        readUsage();
    }

    public float getUsage()
    {
        readUsage();
        return usage;
    }

    private void readUsage()
    {
        try
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/stat")), 1000);
            String load = reader.readLine();
            reader.close();

            String[] toks = load.split(" ");

            long currTotal = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4]);
            long currIdle = Long.parseLong(toks[5]);

            this.usage = (currTotal …
Run Code Online (Sandbox Code Playgroud)

android cpu-usage

59
推荐指数
4
解决办法
10万
查看次数

在内存上获得可用空间

是否可以通过Android SDK获取Android设备(而非SD卡)上的可用内存量?

如果是这样,怎么样?

android diskspace

39
推荐指数
4
解决办法
4万
查看次数

如何获得设备的总RAM大小?

我想获得一个设备的完整RAM大小.memoryInfo.getTotalPss()返回0.没有获取总RAM大小的函数ActivityManager.MemoryInfo.

这该怎么做?

size ram android

22
推荐指数
4
解决办法
4万
查看次数

Bitmap分配如何在Oreo上运行,以及如何调查它们的内存?

背景

在过去几年中,为了检查Android上的堆内存量以及使用量,可以使用以下内容:

@JvmStatic
fun getHeapMemStats(context: Context): String {
    val runtime = Runtime.getRuntime()
    val maxMemInBytes = runtime.maxMemory()
    val availableMemInBytes = runtime.maxMemory() - (runtime.totalMemory() - runtime.freeMemory())
    val usedMemInBytes = maxMemInBytes - availableMemInBytes
    val usedMemInPercentage = usedMemInBytes * 100 / maxMemInBytes
    return "used: " + Formatter.formatShortFileSize(context, usedMemInBytes) + " / " +
            Formatter.formatShortFileSize(context, maxMemInBytes) + " (" + usedMemInPercentage + "%)"
}
Run Code Online (Sandbox Code Playgroud)

这意味着,您使用的内存越多,特别是通过将位图存储到内存中,您就可以越接近允许应用程序使用的最大堆内存.当您达到最大值时,您的应用程序将因OutOfMemory异常(OOM)而崩溃.

问题

我注意到在Android O上(在我的情况下是8.1,但它也可能在8.0上),上面的代码不受Bitmap分配的影响.

进一步深入,我注意到在Android分析器中你使用的内存越多(在我的POC中保存大位图),使用的本机内存就越多.

为了测试它是如何工作的,我创建了一个简单的循环:

    val list = ArrayList<Bitmap>()
    Log.d("AppLog", "memStats:" + MemHelper.getHeapMemStats(this))
    useMoreMemoryButton.setOnClickListener {
        AsyncTask.execute {
            for (i in …
Run Code Online (Sandbox Code Playgroud)

memory android bitmap android-8.0-oreo

17
推荐指数
1
解决办法
1776
查看次数

android:largeHeap ="true"约定?

我正在写一个图片库应用程序,我一直遇到内存不足错误.我缓存了所有图像,但是当我尝试快速切换图像时会出现问题.我假设应用程序分配的内存比GC有时间释放它们更快(因为当我慢慢切换图像时不会发生崩溃).

在对这个问题进行了几天的敲击之后,我终于决定尝试在清单文件中给出largeHeap设置.在此设置之后,无论我在图像之间切换多快,我的应用程序都不会崩溃.

现在,我想知道是否存在使用largeHeap设置的任何约定或一般准则,因为如果使用注释应用程序使用largeHeap可能没有多大意义.一般来说,哪些应用程序适合largeHeap设置?

谢谢

android memory-management

16
推荐指数
1
解决办法
1万
查看次数

如何获得总内存和内部存储大小 Android?

我正在尝试获取总内存 (RAM) 和内部存储大小,但我使用的每种方法都报告它太低。我知道内核可能会占用其中的一些,但我需要知道总共安装了多少。

对于内存,我首先从 /proc/meminfo/ 读取,然后使用getMemoryInfo. 每个报告都小于安装的内存量(700MB 而不是 1GB)。

对于我使用的内部存储大小Environment.getDataDirectorygetBlockSizeLonggetBlockCountLong. 这样做的结果远低于我所知道的已安装的存储量。操作系统中的设置与我的方法报告的数量一致,但我需要知道安装的总量,而不仅仅是它认为的数量(即使我输入它在我脑海中听起来违反直觉)。

编辑:正如我所说,我已经查看了正在发送的问题并尝试了他们的方法。与我所知道的安装情况相比,报告的值不正确。

java size ram storage android

6
推荐指数
1
解决办法
9829
查看次数

获取在Android中使用Application的总RAM大小

我想从我的Android手机中收集一些统计数据.

当我开始我的应用程序时,我想知道以下内容:

  • 应用程序使用多少RAM.
  • 我的手机有多少可用内存.
  • 我的手机有多少RAM.

我必须做些什么来收集统计信息,可能会写一些代码,或者你可能会使用一些提供这些信息的应用程序或其他东西.我使用MAT,但它对我没有帮助,也许我想念一些东西.

我想收集这些统计数据的主要原因是,应用程序可能会开始杀死其他应用程序以释放更多空间,如果我可以收集此类信息,我将了解所有内容.


编辑

例如我的应用程序使用大小为85 MB的库(helper.jar),我知道如果应用程序使用.jar它加载到手机的RAM,现在我怎么看到我的RAM从2增加到2 + 85(大小.jar).

如果我从ADB 键入adb shell cat/proc/meminfo此命令,我将看到有关内存的一些信息.

我如何从JAVA代码中做到这一点?


最诚挚的问候,ViTo Brothers.

java memory ram android memory-management

5
推荐指数
1
解决办法
3627
查看次数

Android - 获取分配的内存

有什么办法,如何确定Android应用程序中的实际分配内存(代码中)?

谢谢

航点

android memory-management

5
推荐指数
1
解决办法
3504
查看次数

Android App被SyncAdapter杀死

我有一个SyncAdapter,它在初始入门过程(登录/注册)期间被调用,该过程处理联系人以查找已经使用该系统的用户联系人.

当SyncAdapter运行时,应用程序在特定设备(Moto G)上几乎每次都被杀死(10次中有9次).

我最初的想法是,由于设备的可用RAM有限,应用程序正在被杀死.所以,我试着证实这个理论:

@Override
public void onPerformSync(Account account, Bundle extras, String authority,
                          ContentProviderClient provider, SyncResult syncResult) {
    ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
    ActivityManager activityManager = (ActivityManager) getContext()
            .getSystemService(Context.ACTIVITY_SERVICE);
    activityManager.getMemoryInfo(mi);
    long availableMegs = mi.availMem / 1048576L;
    Log.d(TAG, "Available: " + availableMegs);
    Log.d(TAG, "Low Memory: " + mi.lowMemory);
}
Run Code Online (Sandbox Code Playgroud)

事实证明RAM可能不是问题,因为日志看起来像这样:

03-09 11:38:34.444 19193-21339/mypackage.sandbox D/SyncAdapter: Available: 252
03-09 11:38:34.445 19193-21339/mypackage.sandbox D/SyncAdapter: Low Memory: false
Run Code Online (Sandbox Code Playgroud)

在日志中我发现了这个:

 03-09 11:38:35.233 865-1610/? I/ActivityManager: Killing 19193:mypackage.sandbox/u0a579 (adj 0): depends on provider …
Run Code Online (Sandbox Code Playgroud)

android android-syncadapter

5
推荐指数
0
解决办法
725
查看次数

Android Profiler与Java API级别内存计算

  1. AFAIK android根据OEM设备及其RAM自身的屏幕分辨率分配堆限制.例如:三星s5 128mb是限制. 如何在Android中获取当前的内存使用量?

  2. 而Android Profiler显示我的应用程序吃的内存超过> 128.

内存不足

Line 160185: 12-08 11:22:18.332 I/art     (11728): Alloc partial concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 127MB/128MB, paused 2.012ms total 240.841ms
Line 160325: 12-08 11:22:18.652 I/art     (11728): Clamp target GC heap from 143MB to 128MB
Line 160327: 12-08 11:22:18.652 I/art     (11728): Alloc concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 127MB/128MB, paused 2.378ms total 314.229ms
Line 160675: 12-08 …
Run Code Online (Sandbox Code Playgroud)

java memory android heap-memory android-profiler

5
推荐指数
0
解决办法
371
查看次数

android - 如何获取我的Android设备的内存使用情况

朋友们在做什么,希望最好.朋友,我想知道我的Android设备有多少内存,以及有多少内存使用活动内存,非活动内存,可用内存和MB中的有线内存我已经通过此链接通过解析"/ system/bin/cat","/ proc/meminfo"我们可以得到上面提到的东西,是的,我得到所有的东西,但我得到一个长串我拥有一切

 MemTotal:         377192 kB
  MemFree:           10448 kB
  Buffers:            1368 kB``
  Cached:            74276 kB
  SwapCached:            0 kB
  Active:           143116 kB
  Inactive:         177292 kB
  Active(anon):     118388 kB
  Inactive(anon):   137664 kB
  Active(file):      24728 kB
  Inactive(file):    39628 kB
    Unevictable:       10664 kB
    Mlocked:           10372 kB
    HighTotal:        190464 kB
    HighFree:            568 kB
    LowTotal:         186728 kB
    LowFree:            9880 kB
    SwapTotal:             0 kB
    SwapFree:              0 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        255440 kB
Mapped:            45816 kB
Shmem:               624 kB
Slab:              10952 kB …
Run Code Online (Sandbox Code Playgroud)

memory android memory-management

4
推荐指数
1
解决办法
1万
查看次数

如何在Android设备中获得当前可用的RAM

在我们进入的设备中Manage apps- > running tab然后在底部我们看到使用的内存和可用内存实时改变它们的值.

我们如何将其编码到我的应用程序以显示相同的统计信息?

谢谢

android android-memory

3
推荐指数
1
解决办法
4652
查看次数