Dear Sir:

I developed a FTP uploading program which upload the string to a text
file through FTP. This program only works well as an Java application
on PC, but when I put the same code to Android application on
Emulator, Android always begins to grow heap and allocate memory when
the code calls the function"URLConnection.getOutputStream()", and
finally Android is "Out of memory". I have suffered from this problem
for a week. If you could help me, I really appreciate!

Below is the code and debug trace got by "adb logcat". (I replace the
host, user, password and targetfile with some common strings.)


                   String host = "hostname";
                   String user = "username";
                   String password = "password";
                   String targetfile = "filename";

                   try{
                     URL url= new URL("ftp://"+ user+ ":"+ password+
"@"+ host+ "/"+ targetfile + ";type=i");
                     URLConnection urlc = url.openConnection();
                     Log.d("DEBUG", " openconnection done");

                     OutputStream os = urlc.getOutputStream();//
problem happens from this line
                     Log.d("DEBUG","get OutputStream");
                     String packet_str = "Uploading";
                     byte[] buf = packet_str.getBytes();
                     os.write(buf);
                     Log.d("DEBUG","write done");
                     os.close();
                     urlc= null;
                   }catch (Exception E) {
                       Log.d("DEBUG","Erro Happen!" + E.getMessage
());
                       E.printStackTrace();
                   }

Below is the trace:

D/DEBUG   (  719):  openconnection done
D/InetAddress(  719): xzzb.hostrator.com: 64.191.109.6 (family 2,
proto 6)
D/dalvikvm(  637): GC freed 2854 objects / 162328 bytes in 177ms
D/dalvikvm(  719): GC freed 14245 objects / 422552 bytes in 84ms
D/dalvikvm(  719): GC freed 19713 objects / 529824 bytes in 75ms
D/dalvikvm(  719): GC freed 17813 objects / 501656 bytes in 78ms
D/dalvikvm(  719): GC freed 23615 objects / 567184 bytes in 82ms

.....

D/dalvikvm(  719): GC freed 74935 objects / 1798504 bytes in 162ms
D/dalvikvm(  719): GC freed 74935 objects / 1798504 bytes in 155ms
D/dalvikvm(  719): GC freed 43212 objects / 1037152 bytes in 118ms
I/dalvikvm-heap(  719): Forcing collection of SoftReferences for
9437196-byte allocation
D/dalvikvm(  719): GC freed 0 objects / 0 bytes in 62ms
E/dalvikvm-heap(  719): Out of memory on a 9437196-byte allocation.
I/dalvikvm(  719): "main" prio=5 tid=3 RUNNABLE
I/dalvikvm(  719):   | group="main" sCount=0 dsCount=0 s=0
obj=0x40018e70
I/dalvikvm(  719):   | sysTid=719 nice=0 sched=0/0 handle=-1097544548
I/dalvikvm(  719):   at java.lang.AbstractStringBuilder.enlargeBuffer
(AbstractStringBuilder.java:~99)
I/dalvikvm(  719):   at java.lang.AbstractStringBuilder.append0
(AbstractStringBuilder.java:153)
I/dalvikvm(  719):   at java.lang.StringBuffer.append
(StringBuffer.java:128)
I/dalvikvm(  719):   at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.readLine
(FtpURLConnection.java:403)
I/dalvikvm(  719):   at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.getReply
(FtpURLConnection.java:355)
I/dalvikvm(  719):   at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.port
(FtpURLConnection.java:391)
I/dalvikvm(  719):   at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.connectInternal
(FtpURLConnection.java:232)
I/dalvikvm(  719):   at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.connect
(FtpURLConnection.java:189)
I/dalvikvm(  719):   at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.getOutputStream
(FtpURLConnection.java:342)
I/dalvikvm(  719):   at com.example.sendonce.sendonce$1.onClick
(sendonce.java:118)
I/dalvikvm(  719):   at android.view.View.performClick(View.java:2179)
I/dalvikvm(  719):   at android.view.View.onTouchEvent(View.java:3828)
I/dalvikvm(  719):   at android.widget.TextView.onTouchEvent
(TextView.java:6291)
I/dalvikvm(  719):   at android.view.View.dispatchTouchEvent
(View.java:
3368)
I/dalvikvm(  719):   at android.view.ViewGroup.dispatchTouchEvent
(ViewGroup.java:863)
I/dalvikvm(  719):   at android.view.ViewGroup.dispatchTouchEvent
(ViewGroup.java:863)
I/dalvikvm(  719):   at android.view.ViewGroup.dispatchTouchEvent
(ViewGroup.java:863)
I/dalvikvm(  719):   at android.view.ViewGroup.dispatchTouchEvent
(ViewGroup.java:863)
I/dalvikvm(  719):   at com.android.internal.policy.impl.PhoneWindow
$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707)
I/dalvikvm(  719):   at
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent
(PhoneWindow.java:1197)
I/dalvikvm(  719):   at android.app.Activity.dispatchTouchEvent
(Activity.java:1993)
I/dalvikvm(  719):   at com.android.internal.policy.impl.PhoneWindow
$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
I/dalvikvm(  719):   at android.view.ViewRoot.handleMessage
(ViewRoot.java:1525)
I/dalvikvm(  719):   at android.os.Handler.dispatchMessage
(Handler.java:99)
I/dalvikvm(  719):   at android.os.Looper.loop(Looper.java:123)
I/dalvikvm(  719):   at android.app.ActivityThread.main
(ActivityThread.java:3948)
I/dalvikvm(  719):   at java.lang.reflect.Method.invokeNative(Native
Method)
I/dalvikvm(  719):   at java.lang.reflect.Method.invoke(Method.java:
521)
I/dalvikvm(  719):   at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
I/dalvikvm(  719):   at com.android.internal.os.ZygoteInit.main
(ZygoteInit.java:540)
I/dalvikvm(  719):   at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm(  719):
D/AndroidRuntime(  719): Shutting down VM
W/dalvikvm(  719): threadid=3: thread exiting with uncaught exception
(group=0x4000fe70)
E/AndroidRuntime(  719): Uncaught handler: thread main exiting due to
uncaught exception
E/AndroidRuntime(  719): java.lang.OutOfMemoryError
E/AndroidRuntime(  719):     at
java.lang.AbstractStringBuilder.enlargeBuffer
(AbstractStringBuilder.java:99)
E/AndroidRuntime(  719):     at
java.lang.AbstractStringBuilder.append0
(AbstractStringBuilder.java:153)
E/AndroidRuntime(  719):     at java.lang.StringBuffer.append
(StringBuffer.java:128)
E/AndroidRuntime(  719):     at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.readLine
(FtpURLConnection.java:403)
E/AndroidRuntime(  719):     at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.getReply
(FtpURLConnection.java:355)
E/AndroidRuntime(  719):     at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.port
(FtpURLConnection.java:391)
E/AndroidRuntime(  719):     at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.connectInternal
(FtpURLConnection.java:232)
E/AndroidRuntime(  719):     at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.connect
(FtpURLConnection.java:189)
E/AndroidRuntime(  719):     at
org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.getOutputStream
(FtpURLConnection.java:342)
E/AndroidRuntime(  719):     at com.example.sendonce.sendonce
$1.onClick
(sendonce.java:118)
E/AndroidRuntime(  719):     at android.view.View.performClick
(View.java:2179)
E/AndroidRuntime(  719):     at android.view.View.onTouchEvent
(View.java:3828)
E/AndroidRuntime(  719):     at android.widget.TextView.onTouchEvent
(TextView.java:6291)
E/AndroidRuntime(  719):     at android.view.View.dispatchTouchEvent
(View.java:3368)
E/AndroidRuntime(  719):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
E/AndroidRuntime(  719):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
E/AndroidRuntime(  719):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
E/AndroidRuntime(  719):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
E/AndroidRuntime(  719):     at
com.android.internal.policy.impl.PhoneWindow
$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707)
E/AndroidRuntime(  719):     at
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent
(PhoneWindow.java:1197)
E/AndroidRuntime(  719):     at
android.app.Activity.dispatchTouchEvent
(Activity.java:1993)
E/AndroidRuntime(  719):     at
com.android.internal.policy.impl.PhoneWindow
$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
E/AndroidRuntime(  719):     at android.view.ViewRoot.handleMessage
(ViewRoot.java:1525)
E/AndroidRuntime(  719):     at android.os.Handler.dispatchMessage
(Handler.java:99)
E/AndroidRuntime(  719):     at android.os.Looper.loop(Looper.java:
123)
E/AndroidRuntime(  719):     at android.app.ActivityThread.main
(ActivityThread.java:3948)
E/AndroidRuntime(  719):     at java.lang.reflect.Method.invokeNative
(Native Method)
E/AndroidRuntime(  719):     at java.lang.reflect.Method.invoke
(Method.java:521)
E/AndroidRuntime(  719):     at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:782)
E/AndroidRuntime(  719):     at
com.android.internal.os.ZygoteInit.main
(ZygoteInit.java:540)
E/AndroidRuntime(  719):     at dalvik.system.NativeStart.main(Native
Method)
I/Process (  569): Sending signal. PID: 719 SIG: 3
I/dalvikvm(  719): threadid=7: reacting to signal 3
I/dalvikvm(  719): Wrote stack trace to '/data/anr/traces.txt'

Thank you!
Bo

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to