android-studio - Android工作室Java.lang.OutOfMemoryError
问题描述
所以,我一直在创建我的项目并使用 android studio 的模拟器来运行和测试我的应用程序。工作得很好,但是在我的安卓手机上测试时我遇到了一个错误:
java.lang.OutOfMemoryError: Failed to allocate a 51321612 byte allocation with 16767424 free bytes
and 37MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:700)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:535)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1179)
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:770)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:621)
at android.content.res.Resources.loadDrawable(Resources.java:1727)
at android.content.res.TypedArray.getDrawable(TypedArray.java:945)
at android.widget.ImageView.<init>(ImageView.java:157)
at android.widget.ImageView.<init>(ImageView.java:145)
at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:72)
at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:187)
at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:107)
at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1407)
at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1457)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828
at android.view.LayoutInflater.rInflate(LayoutInflater.java:873
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:873)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:873
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1011)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.inflate(LayoutInflater.java:525)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
我正在尝试解决此问题,但需要一些帮助。这是我的设计代码:
<androidx.cardview.widget.CardView
android:layout_margin="10dp"
app:cardCornerRadius="50dp"
app:cardElevation="0dp"
android:layout_width="300dp"
android:layout_height="125dp">
<ImageView
android:id="@+id/FullBody"
tools:ignore="ContentDescription"
android:src="@drawable/full"
android:scaleType="centerCrop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
> </ImageView>
这是我正在使用的 android studio 版本:
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.gymtastic"
minSdkVersion 17
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true;
我使用的手机的安卓版本是 7.0,相当于 24Sdk。如果需要更多信息,将提供。
解决方案
为您的项目分配特定数量的堆内存: 打开位于以下位置的文件:
C:\Program Files\Android\Android Studio\bin\studio.exe.vmoptions
将此内容更改为:
-Xms128m
-Xmx4096m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=200m
-XX:+UseCompressedOops
"
Xmx 指定 Java 虚拟机 (JVM) 的最大内存分配池,而 Xms 指定初始内存分配池。您的 JVM 将以 Xms 的内存量启动,并且能够使用最大 Xmx 的内存量。
在 Android Studio 2.0 中,您还可以通过访问“帮助”菜单中的“编辑自定义 VM 选项”来创建/编辑此文件。
Wesley 在 2015 年 2 月 26 日的回答 Android Studio - 如何增加分配的堆大小
推荐阅读
- tabulator - 当用户离开单元格而不进行任何更改时,不会引发制表符 cellEditCancelled
- c# - 用于消息传递和 saga 持久性的 Azure 服务总线
- javascript - 尝试刷新 iframe 标记中的 src 链接
- angular - oauthService.getAccessToken() 在 angular-oauth2-oidc 中返回 null
- mysql - 如果我们在 where 子句中结合了 AND & OR 条件,哪些数据库索引是最好的?
- spring-boot - 由于运行配置未在下拉列表中显示要选择的项目名称,因此 Spring Boot 应用程序未在 STS 中使用配置文件运行
- android - 画布绘制小文本
- excel - Excel中的自定义日期格式和过滤问题
- java - 如何动态更改日期格式
- flutter - Flutter:如何自定义图像滑块