如何解決「java.lang.OutOfMemoryError:未能分配一個996567422字節分配與7088560自由字節和117MB直到OOM「在android中。如何解決「java.lang.OutOfMemoryError:無法分配一個996567422字節分配與7088560空閒字節和117MB,直到OOM」在android
由於大的圖像尺寸的我得到這個問題,我在清單文件中添加這兩行
安卓硬件加速=「假」, 機器人:largeHeap =「真」
再也不工作,如何解決的OutOfMemoryError
這是我的logcat
04-05 12:01:43.287 11314-17193/info.sherpify.pavithracs.sherpifys E/art: Throwing OutOfMemoryError "Failed to allocate a 996567422 byte allocation with 7078106 free bytes and 117MB until OOM"
04-05 12:01:43.289 11314-17193/info.sherpify.pavithracs.sherpifys E/AndroidRuntime: FATAL EXCEPTION: Thread-88543
Process: info.sherpify.pavithracs.sherpifys, PID: 11314
java.lang.OutOfMemoryError: Failed to allocate a 996567422 byte allocation with 7078106 free bytes and 117MB until OOM
at com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:316)
at com.android.volley.toolbox.DiskBasedCache.readString(DiskBasedCache.java:526)
at com.android.volley.toolbox.DiskBasedCache.readStringStringMap(DiskBasedCache.java:549)
at com.android.volley.toolbox.DiskBasedCache$CacheHeader.readHeader(DiskBasedCache.java:392)
at com.android.volley.toolbox.DiskBasedCache.initialize(DiskBasedCache.java:155)
at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:85)
看到下面的編碼我是通過使用畢加索將圖像設置爲imageview。
package info.sherpify.pavithracs.sherpifys.adapter;
/**
* Created by pavithracs on 11/1/17.
*/
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
import info.sherpify.pavithracs.sherpifys.R;
import info.sherpify.pavithracs.sherpifys.model.Categorieslist;
import info.sherpify.pavithracs.sherpifys.utilis.NetworkUtils;
public class RecyclerViewAdapterSearch extends RecyclerView.Adapter<RecyclerViewAdapterSearch.ViewHolder> {
private List<Categorieslist> items;
private OnItemClickListener onItemClickListener;
public RecyclerViewAdapterSearch(List<Categorieslist> items) {
this.items = items;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_home_search, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
Categorieslist item = items.get(position);
Log.i("Items mentor",""+item);
try {
holder.textmentordesignation.setText(item.getFieldUserDesig());
holder.textyearofexperience.setText(item.getFieldUserExp()+" Years");
holder.textmentorname.setText(item.getFieldUserName());
holder.textcurrentcompany.setText("Current: "+item.getFieldUserCurrentCompany());
holder.textpreviouscompany.setText("Previous: "+item.getFieldUserPreviousCompany());
Log.i("Field--",""+item.getFieldUserDesig());
Log.i("Field--",""+item.getFieldUserName());
Log.i("Field--",""+item.getFieldUserExp());
holder.image.setImageBitmap(null);
Picasso.with(holder.image.getContext()).load(NetworkUtils.BASE_IMAGE_URL_USER_PICS +item.getFieldUserProfilepic()).resize(50, 50).error(R.drawable.com_facebook_profile_picture_blank_portrait).into(holder.image);
holder.itemView.setTag(item);
holder.relativementor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onItemClick(v,items.get(position).getFieldUserId(),items.get(position).getFieldUserName(),items.get(position).getFieldUserDesig(),items.get(position).getFieldUserSummary(),items.get(position).getFieldUserProfilepic(),items.get(position).getFieldUserCurrentCompany(),items.get(position).getFieldMentorId());
}
});
} catch (NullPointerException e) {
e.printStackTrace();
}
}
@Override
public int getItemCount() {
return items.size();
}
protected static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textmentordesignation,textyearofexperience,textmentorname,textcurrentcompany,textpreviouscompany;
public ImageView image;
RelativeLayout relativementor;
public ViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
textmentordesignation = (TextView) itemView.findViewById(R.id.textmentordesignation);
textyearofexperience = (TextView) itemView.findViewById(R.id.textyearsofexperience);
textmentorname = (TextView) itemView.findViewById(R.id.textmentorname);
textcurrentcompany = (TextView) itemView.findViewById(R.id.textcurrentcompany);
textpreviouscompany = (TextView) itemView.findViewById(R.id.textpreviouscompany);
relativementor = (RelativeLayout) itemView.findViewById(R.id.relativementor);
}
}
public interface OnItemClickListener {
void onItemClick(View view, String viewModel, String cName, String uId, String catId,String catProfilepic,String currentcompany,String mentorid);
}
}
請添加完整的錯誤日誌輸出! –
我懷疑你將能夠在很多Android設備上加載那麼多的數據......你加載了多少圖片以獲得996567422byte(= 996.567422Mb) – AxelH
[Android:java.lang.OutOfMemoryError:Failed to分配一個23970828字節分配與2097152空閒字節和2MB,直到OOM](http://stackoverflow.com/questions/32244851/androidjava-lang-outofmemoryerror-failed-to-allocate-a-23970828-byte-allocatio) –