public void getMemoryInfo(Debug.MemoryInfo outInfo) throws RemoteException {
   Parcel data = Parcel.obtain();
   Parcel reply = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0);
   reply.readException();
   outInfo.readFromParcel(reply);
   data.recycle();
   reply.recycle();
 }
 public Debug.MemoryInfo dumpMemInfo(
     FileDescriptor fd, boolean checkin, boolean all, String[] args) throws RemoteException {
   Parcel data = Parcel.obtain();
   Parcel reply = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   data.writeFileDescriptor(fd);
   data.writeInt(checkin ? 1 : 0);
   data.writeInt(all ? 1 : 0);
   data.writeStringArray(args);
   mRemote.transact(DUMP_MEM_INFO_TRANSACTION, data, reply, 0);
   reply.readException();
   Debug.MemoryInfo info = new Debug.MemoryInfo();
   info.readFromParcel(reply);
   data.recycle();
   reply.recycle();
   return info;
 }