Android :: One Line Causing Lots Of Garbage Collection.String.format With Float?
Apr 13, 2009
In my ListView, there's one line of code in my ViewBinder that causes lots of garbage collection as I scroll through the list, about every two seconds...
D/dalvikvm(16312): GC freed 13171 objects / 659576 bytes in 162ms D/dalvikvm(16312): GC freed 13122 objects / 654128 bytes in 129ms D/dalvikvm(16312): GC freed 13134 objects / 655416 bytes in 142ms D/dalvikvm(16312): GC freed 13129 objects / 654840 bytes in 129ms D/dalvikvm(16312): GC freed 13149 objects / 655000 bytes in 110ms D/dalvikvm(16312): GC freed 13150 objects / 655720 bytes in 127ms D/dalvikvm(16312): GC freed 13075 objects / 652256 bytes in 111ms D/dalvikvm(16312): GC freed 13232 objects / 659040 bytes in 136ms D/dalvikvm(16312): GC freed 13106 objects / 653920 bytes in 110ms D/dalvikvm(16312): GC freed 13155 objects / 655152 bytes in 110ms
The offending code is here, which formats a price for each item in the list: String price = cursor.getString(columnIndex); final float pricef = Float.parseFloat(price); price = new StringBuffer("$").append(String.format("%. 2f",pricef)).toString(); ((TextView)view).setText(price);
If I comment out the line with String.format, the garbage collection goes away. So what's the "right" way to do this to avoid allocations? That database field holds an unformatted text string which I'm trying to format into proper currency format (example: format "1.5" to "$1.50")
View 9 Replies
Jun 6, 2010
I'm writing an Augmented Reality codes that should works in realtime,
But the VM's garbage collection hinders my program's performance.
I checked my program's execution time for each in OnPrevFrame(byte[], Camera)
and it execution time increases from around 50ms to 120ms at just after each garbage collection.
I copied parts of logs below. (local time is just before and after of signal processing, and global time is time stamps for every onPreviewFrame() calling )Also I executed onPreviewFrame without any signal processing on it, but
the garbage collection is also carried showing debugging message around 60ms it spends for memory release.
Is this garbage collection come from releasing byte[] yuvs image data? ( i uses 320x240 thumb nail )
then this clearly comes from Java's limitation, so there will be no hope for improvement unless
I found a way to directly access camera device? do you think this is feasible? Hope listen to others' comments.
View 3 Replies
View Related
Dec 28, 2009
I'm drawing a rect to a surfaceview. Nothing special, just a test like this, in the surfaceview-extended class:
private int mPosX = 0; private Paint mPaint = new Paint(); Code...
the rect just bounces around the screen. I'm watching DDMS, I still see the garbage collector being called, even with this simple draw loop. There is no other application code being executed.
I'm wondering if it's realistic to expect the gc to not be called at all if we take care to not allocate any objects during our draw loops. I'm trying to extend this example to do some smooth animations, but every once in awhile the gc is called and you can see the drawing stutter. Although none of my application code is allocating any new objects, I don't know what the underlying API is doing inside surfaceview etc, and I doubt we can control that. Just wondering if this is not possible, I'd prefer to abandon this game idea up-front if we can't guarantee smooth animation.
View 5 Replies
View Related
May 25, 2009
I am developing a camera application , where the frame rate is important. However, camera uses a preview callback function which allocates a byte[] array of 230400 bytes, which makes it necessary for the garbage collection to step in. Can someone suggest me a way to avoid garbage collection stepping in?
View 10 Replies
View Related
May 20, 2009
Hi, I have discovered while using DDMS that the basic OpenGL system calls in my code are allocating memory and causing the garbage collector to fire! It's not the system calls themselves causing the problem but the use of direct byte buffers to pass data in.
The direct byte buffers I use in calls such as glVertexPointer & glTexCoordPointer lead to java.nio calls to read the byte buffers, leading to objects of type org.apache.harmony.luni.platform.PlatformAddress being created.
These buffers are the same as in the example OpenGL code. I am creating a ByteBuffer using allocateDirect() and then creating an IntBuffer using ByteBuffer.asIntBuffer() to pass data to the OpenGL functions. The problem occurs as the system is reading the buffers.
Is there a way around this? Maybe using something other than direct byte buffers? It seems that using this method, OpenGL code of any complexity (ie a lot of OpenGL system calls in every frame) is doomed to pause a lot. I am aware that these calls should be kept to a minimum, but I still need to use a certain amount of them.
View 9 Replies
View Related
Mar 20, 2010
I'm performance tuning interactive games in Java for the Android platform. Once in a while there is a hiccup in drawing and interaction for garbage collection. Usually it's less than one tenth of a second, but sometimes it can be as large as 200ms on very slow devices. I am using the ddms profiler (part of the Android SDK) to search out where my memory allocations come from and excise them from my inner drawing and logic loops. The worst offender had been short loops done like,
for(GameObject gob : interactiveObjects)
gob.onDraw(canvas);........................
View 3 Replies
View Related
Apr 15, 2009
I have screen 1 of my app which I want to transition smoothly into screen 2.
I want the transition to be smooth but I don't mind a slight pause before or after the transition. Before the transition I dump a lot of objects that are no longer needed from screen 1.
However, as luck would have it (!), the garbage collection almost always takes place during the transition causing the frame rate to drop and the transition looks terrible :(
Is there a way for me to either force the garbage collection to complete before the transition or delay until after the transition is finished? I have tried System.gc() in various places but it doesn't seem to help performance.
View 2 Replies
View Related
Jul 6, 2010
I have a Service which uploads a big file to a webserver. This works fine on the emulator (android 2.1). But if i run it on a Nexus One Froyo phone it starts out fine. But after a while it is in an infinite GC loop. The whole phone becomes unusable:.........................
View 5 Replies
View Related
Aug 1, 2010
I'm trying to update part of a VBO with a call to glBufferSubData(). When I update from the start (0) of my existing shadow buffer, there is no problem, as the buffer starts reading from 0. The following will read 0 to y from the buffer and place it at 0 to y in the VBO: gl.glBufferSubData(GL11.GL_ARRAY_BUFFER, 0, y, mPositionBuffer);
However, if I want to update a portion of the VBO (not from 0) I run into a problem; The following doesn't work, since it will write the values from the start of the buffer (0 to y) into position x to x+y of the VBO:........................
View 1 Replies
View Related
Jan 3, 2010
I'm running into some issues with input events and garbage collection, or more precisely object allocation. I am creating a game and have pretty much got my head around the OpenGL environment. I've digested all the relevant material I could find regarding performance, memory allocation etc (and watched the excellent presentation by Chris Pruett - http://code.google.com/events/io/2009/sessions/WritingRealTimeGamesAn...). I've pretty much eliminated any object allocations after initial setup from my game (which is still in its infancy), but I'm still getting a bunch of GC calls, like this:...........................
View 6 Replies
View Related
Jul 8, 2010
I have a JSON Object with a latitude and longitude String on which I get the values doing this: String latitude = picInfo.getString("latitude"); String longitude = picInfo.getString("longitude");Then I convert them to floats like this: float latInt = Float.valueOf(latitude).floatValue(); float longInt = Float.valueOf(longitude).floatValue();And place them on a GeoPoint like this: GeoPoint X = new GeoPoint((int) (latInt*1E6),(int) (longInt*1E6) ); Debugging this values I can see JAVA approximates the values, is there anyway to keep them exactly the same?
View 6 Replies
View Related
Nov 19, 2010
I have an EditText for which will be using for a float number. So I'm trying to read the text from the EditText and put it into a float variable. But I seem to have a text to float problem.I've tried using Float.parseFloat(string) and just general casting, but nothing seem to do it. What can I do here? Also, is there a way to check for a valid float number before writing it to a variable?
View 1 Replies
View Related
Sep 6, 2010
Passing two int values m =0 & s = 11, to below function String formatted = String.format("%1$02d:%2$02d", m, s); returning the value like .0:11 ,What could be the problem? m=0, s=11 -->.0:11 m=0, s=1 --> .0:.1. The 0 added to format the string always coming as '.' (dot). Can anyone know ,from where the number patterns are getting loaded in Android? I gone thorough the code, Its related the following file, androiddalviklibcoreicusrcmainjavacomibmicu4jniutil Resources.java ->localeData.numberPattern. How the pattern for particular locale is loaded, What could be the problem for the above?
View 3 Replies
View Related
Jun 29, 2010
I am trying to convert string to date, and then I ma saving this date in a file , which saves in the following format:Mon Jun 21 16:31:24 Asia/Karachi 2010.and then when later I read this date from file as a String, I again want to save it to a Date,
View 2 Replies
View Related
Mar 8, 2010
I have the following string defined in strings.xml
<string name="InfoLong"><b>%1$s\%</b><br/>Tie:%2$s\%<br/>Win%3$s\%</ string>
and in my code ...
Can I embed a newline in a format string?
View 8 Replies
View Related
Dec 17, 2009
I have a string defined in my String.xml file that uses format arguments, i.e.: <string name="myString">Hello %1$s.</string> Is there a way to assign a value to the format argument in a layout xml file?
View 2 Replies
View Related
Jul 18, 2009
Double mChange = Double.parseDouble("7.1") - Double.parseDouble ("7.15"); Float mChange = Float.parseFloat("7.1") - Float.parseFloat("7.15"); mChange should be -0,05 in both cases, right? So why is mChangeD = -0.05000019 ???
View 5 Replies
View Related
Jul 10, 2010
I have a text file in my res/raw directory. I want to read the file line by line, but FileReader and BufferedReader fail, because of Android's security restriction. How else can I do it?
View 1 Replies
View Related
Jun 29, 2010
I have the localized strings file that is used in the Iphone app that I work on to port to Android. Are there any tools that go through the file taken from the xcode project and build the xml needed to use the strings in android? This tool should be easy to build but I appreciate any pointers to already working tools.
View 4 Replies
View Related
Oct 1, 2010
In Android, capturing date from datepicker and storing as string in sqlite. Sorting by date doesn't work because they're strings (unless I'm doing it wrong.I've googled this issue for ~5 days, and it looks like there should be a way to capture the date from the date picker, convert it to a Long, store it in sqlite as a Long, select and sort on the Long date value, then convert the Long back to a "mm/dd/yyyy" string for display. I've tried various combinations of parse statements, Date, FormatDate, etc. with no luck at all.On activity start, get today's date and display it in button which calls the datepicker.Capture new date from datepicker (if one is entered), save it as a long to sqlite.On opening an activity showing a listview of records, select from sqlite with orderby on date (Long), convert Long to "mm/dd/yyyy" string for display in ListView.
View 3 Replies
View Related
May 5, 2009
If there's anyway way I to access the String values of String resources statically? e.g. a static equivalent of Context.getString(...)?
View 5 Replies
View Related
Nov 12, 2010
I have preferences where you can enable/disable what items will show up on the menu. There are 17 items. I made a string array in values/arrays.xml with titles for each of these 17 items.
I have preferences.xml which has the layout for my preferences file, and I would like to reference a single item from the string array to use as the title.
In the Android developer reference, I see how I can reference a single string with XML, but now how I can reference a string from an array resource in XML.
View 3 Replies
View Related
Aug 4, 2010
Can anybody give me some clue that how to convert binary string into a string(english). I have tried and googled so much but couldn't find an answer.
View 1 Replies
View Related
Jul 27, 2010
I have a class that creates a view to gather data via a function getView() that provides a view with an EditText.This class has also has variable answer.When the user chances the EditText I want to store the content of the EditText in answer.If I would use an onKeyListener I fear that the answer will probably get stored before the last letter is entered.Is there a good way to handle this in the getView() function via some other listener?
View 1 Replies
View Related
Jun 8, 2010
I've read this in a few articles, that one should avoid floating point operations within the physics update of a game.
But how do you really achieve this? Surely all half decent games are going to involve this kind of maths?
Does it mean, convert all your variables to int, or use double instead, or simply just cut it out as much as possible?
View 9 Replies
View Related
Jun 9, 2010
I'm looking for a way to implement a minimum value in my SeekBar and also have the option to increment decimal numbers. For example, currently my SeekBar's minimum is set to 0, but I need it to start at the value 0.2. Also, I would like to have the functionality to be able to have the user select a number from 0.2 to 10.0 at a .1 precision so they can choose the numbers 5.6 or 7.1.
Here are the style attributes for my SeekBar:
CODE:..............
View 1 Replies
View Related
Jun 19, 2010
Does anyone know how to get user input for floats,doubles,ints. I have tried looking everywhere on here and there hasn't been anything that could help me. All it has is EditText.GetText().toString() very frustrated that there isn't a tutorial for this.
View 2 Replies
View Related
Apr 27, 2010
So I have an app where I put arbitrary strings in a database and later extract them like this:
CODE:......................
This works fine in all cases except for when the string looks like a float number, for example "221.123123123". After saving it to the database I can extract the database to my computer and look inside it with a DB-viewer, and the saved number is correct. However, when using cursor.getString() the string "221.123" is returned. I cant for the life of me understand how I can prevent this. I guess I could do a cursor.getDouble() on every single string to see if this gives a better result, but that feels sooo ugly and inefficient.
I just made a small test program. This program prints "result: 123.123", when I would like it to print "result: 123.123123123"
CODE:.................
View 1 Replies
View Related
Sep 10, 2010
Recently I have been having issues with viewing my email messages in the Yahoo Mail App. When I open some messages all is see is line after line of code instead of the message text. It doesn't seem to matter what the source email is (gmail, hotmail, etc). Some emails are ok some are not. Anyone else have this problem? Any fixes?
View 1 Replies
View Related
May 27, 2010
I have an app with about 15 threads. Most do mundane tasks and sleep most of their lives. Others collect information and cache it in hashmaps. The hashmaps grow to a moderate size and level out. The number of keys and size of value remains constant, but the contents of the values changes (at 33 keys per second average). When I start my app, I notice the garbage collection interval goes from minutes to once per second, and the amount of garbage is 700k+ each time. In fact as I was writing this, it caused my phone to reboot with an error "Referencetable Overflow". Here's my question: Are there any tricks to identifying which threads are producing the garbage, or even finding out more about what garbage they are producing?
05-26 22:08:57.052 W/dalvikvm( 1031): ReferenceTable overflow (max=512)
05-26 22:08:57.052 W/dalvikvm( 1031): Last 10 entries in JNI local reference table:
05-26 22:08:57.052 W/dalvikvm( 1031): 502: 0x449904a8 cls=Ljava/lang/String; (28 bytes)
05-26 22:08:57.052 W/dalvikvm( 1031): 503: 0x4494fda8 cls=Ljava/lang/String; (28 bytes)
05-26 22:08:57.052 W/dalvikvm( 1031): 504: 0x44a172c8 cls=Ljava/lang/String; (28 bytes)
05-26 22:08:57.052 W/dalvikvm( 1031): 505: 0x448c7900 cls=Ljava/lang/String; (28 bytes)........
View 2 Replies
View Related