修改Android手机的“虚拟机堆大小”和android:largeHeap来防止APP内存溢出问题

来源:互联网 发布:mysql 自动截断 编辑:程序博客网 时间:2024/04/28 13:33
  • 错误:
09-08 17:11:51.118: I/dalvikvm(21035): "main" prio=5 tid=1 RUNNABLE
09-08 17:11:51.118: I/dalvikvm(21035):   | group="main" sCount=0 dsCount=0 obj=0x41f3dd08 self=0x41f29410
09-08 17:11:51.118: I/dalvikvm(21035):   | sysTid=21035 nice=0 sched=0/0 cgrp=apps handle=1073897816
09-08 17:11:51.118: I/dalvikvm(21035):   | state=R schedstat=( 79947373865 9115793184 129376 ) utm=7183 stm=811 core=1
09-08 17:11:51.118: I/dalvikvm(21035):   at android.graphics.Bitmap.nativeCreate(Native Method)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.graphics.Bitmap.createBitmap(Bitmap.java:924)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.graphics.Bitmap.createBitmap(Bitmap.java:884)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.view.View.buildDrawingCache(View.java:14533)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.view.View.getDrawingCache(View.java:14388)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.view.View.getDrawingCache(View.java:14353)
09-08 17:11:51.118: I/dalvikvm(21035):   at com.gyzjj.activity.signature.MySignActivity.saveSign(MySignActivity.java:247)
09-08 17:11:51.118: I/dalvikvm(21035):   at com.gyzjj.activity.signature.MySignActivity.onClick(MySignActivity.java:163)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.view.View.performClick(View.java:4640)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.view.View$PerformClick.run(View.java:19421)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.os.Handler.handleCallback(Handler.java:733)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.os.Handler.dispatchMessage(Handler.java:95)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.os.Looper.loop(Looper.java:136)
09-08 17:11:51.118: I/dalvikvm(21035):   at android.app.ActivityThread.main(ActivityThread.java:5476)
09-08 17:11:51.118: I/dalvikvm(21035):   at java.lang.reflect.Method.invokeNative(Native Method)
09-08 17:11:51.118: I/dalvikvm(21035):   at java.lang.reflect.Method.invoke(Method.java:515)
09-08 17:11:51.118: I/dalvikvm(21035):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
09-08 17:11:51.118: I/dalvikvm(21035):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
09-08 17:11:51.118: I/dalvikvm(21035):   at dalvik.system.NativeStart.main(Native Method

  • 使用“RAM Manager”修改“虚拟机堆大小”为某一个阀值 xxMB大小
  • 修改 AndroidManifest.xml 里的 Application 标签的属性 android:largeHeap="true"
    Attribute "largeHeap" is only used in API level 11(Android 3.0.x) and higher
  • 重启手机,才能生效。
  • adb.exe shell getprop dalvik.vm.heapsize 可获取 “虚拟机堆大小”是否设置成功
  • dalvik.vm.heapsize这个property只对largeHeap的app起作用。
  • 当app的AndroidManifest.xml设置了大内存,heapGrowthLimit就不起作用了。
  • 小内存机器使用“微信”时,看视频经常崩溃,只要修改dalvik.vm.heapsize、dalvik.vm.heapsize.heapGrowthLimit就应该有效果
  • 小内存机器有时候明明内存还很多,却还是抛出“内存不够”,应该就是每个APP能用“堆大小”的限制。

0 0
原创粉丝点击