Bonjour,
Je vous explique mon souci. J'ai écrit une application qui récupère des données sur un serveur via REST. C'est données sont renvoyées en JSON et ensuite "décortiqués" pour créer mes objets dans mon appli.
En une seule requête, je récupère jusqu'à 130 objets en format json.
Pour lire les données j'utilise un StringBuilder, voici mon code :
Mon souci est que l'ensemble des données renvoyé représente environ 25Mo. sur mon PC ça marche bien, mais j'ai essayé sur une autre configuration et là Java me fait un "java heap space" sur le sb.append(), problème de mémoire apparemment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 BufferedReader bufReader = new BufferedReader(new InputStreamReader(response)); String sLine; StringBuilder sb = new StringBuilder(); while ((sLine = bufReader.readLine()) != null) { sb.append(sLine); sb.append(lineSep); } try { js = new JSONObject(sb.toString()); } catch (JSONException ex) { Logger.getLogger(HttpConnection.class.getName()).log(Level.SEVERE, null, ex); }
Du coup j'ai essayé de découper mes requêtes en plusieurs, à la première requêtes je renvoie la liste en ID de touts mes objets et ensuite, pour chaque ID je récupère les data.
Le souci c'est que ça prend 10 minutes !!!!! (130 requêtes au lieu d'une seule !)
Alors que de tout récupérer d'un seul coup ça me prend 40 secondes....
Comment est-ce que je peux améliorer ça ?
Merci de votre aide.
Partager