小编Den*_*hin的帖子

使用Android仪器测试测量性能

我的目标是使用工具测试(AndroidJUnitRunner)为Android CPU密集型代码编写自动性能测试.

我很惊讶地发现测试结果不可靠,模拟CPU密集型代码,我想测试一下,我写了下面的循环

for(int i=0;i<1000000;i++){
    Math.pow(2,i);
}
Run Code Online (Sandbox Code Playgroud)

该代码在Android应用程序中作为工具测试进行了测试

我得到的结果如下:

仪器测试显示〜230ms完成循环,而同一设备(G5)上的相同代码耗时约600ms

我将非常感谢为什么AndroidJUnitRunner上相同代码的执行时间比真实设备少三倍,而它们最终都在同一台设备上执行

android performance-testing android-instrumentation

8
推荐指数
1
解决办法
262
查看次数

为什么我的 Java 进程在 docker 容器和主机中消耗了两倍的内存

我在尝试分析在 docker 容器与主机上运行的 Java 应用程序中的内存消耗时遇到了一个有趣的问题。

  1. Java 应用程序是 Jetty 服务器 9.4.9 上的 Web 应用程序
  2. Java 版本:1.8
  3. 主机:MAC
  4. Docker 镜像:jetty:9.4-jre8
  5. docker 守护进程是 18.03.1-ce 版本。

在主机上,我使用 Yourkit 工具来分析内存消耗。

对于 docker 容器 docker stats <docker id/name>

我得到的是,在 MAC yourkit 上显示了 50M 非堆大小 + ~40M 堆大小,总共 ~ 100M

在此处输入图片说明

然而,当我在容器上部署和运行相同的战争时,统计数据显示为200M

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
879fb113ca8d        jetty-app           0.19%               214.6MiB / 1.952GiB   10.74%              1.49MB / 88.9kB     31.7MB / 6.42MB     29
Run Code Online (Sandbox Code Playgroud)

任何人都可以对这种现象有所了解吗?

假设stats提供了错误的结果,我尝试使用--memory …

java memory heap-memory docker

7
推荐指数
1
解决办法
2103
查看次数

不同 Android 版本的不同布局

虽然这似乎是一个愚蠢的问题,但我想知道是否有另一种优雅的方式来处理我的设计问题,而不仅仅是创建两个单独的布局我的应用程序应该具有不同的自定义布局,用于棉花糖和牛轧糖版本的持续通知。正如我所说,最直接的方法是创建两个不同的 XML 文件并基于运行时平台加载它们。还有其他方法吗?

android android-layout android-6.0-marshmallow android-7.0-nougat

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

启用 Alpine 在 ARM64 架构上执行 not-musl Java JRE

我的目标是让 Alpine 能够执行非 musl 支持的 JRE。这背后的动机是图像大小缩小,我在压缩 JRE 本身方面取得了一定的进展,但我发现的最小图像是 50M 的 ARM64v8/debian:slim-9。这相当不错,但还不够。我没有找到任何支持 musl 的适用于 ARM64 的 JRE(最高 9)。因此可能的方向是

  1. 拍摄高山影像(约5M)
  2. 使其能够执行 glibc Java 代码(通过安装 glibc APK)
  3. 对生成的镜像运行JRE,希望最终镜像大小小于20M。

这是我的步骤:

我所有的实验都是在真正的 ARM64 硬件上进行的。

使用 jlink 工具将包含缩小模块列表的 OpenJRE 10 文件夹复制到 Apline 映像。

不幸的是,当我尝试运行 ./java --version 时,我得到了

/bin/sh: ./java: not found
Run Code Online (Sandbox Code Playgroud)

我看到 glibc apk 已安装,已添加以下文件夹

/usr/glibc-compat/lib
Run Code Online (Sandbox Code Playgroud)

我所缺少的任何想法将不胜感激。

java glibc docker arm64 alpine-linux

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