Comment résoudre java.lang.OutOfMemoryError: Java heap space erreur

Je suis de travailler en temps réel du projet.

De travail:
Je suis l'obtention de données de twitter et de déplacement de la sortie de cassandra base de données, puis à l'aide de Testrestfull webservice, je suis sortie au format json. Et puis, finalement, les sorties sont affichées dans la page wep. je suis à l'aide de poissons de verre serveur de connexion du service web et la page web. c'est un projet temps réel donc je suis rafraîchissante ma page toutes les 5 secondes.

Premières secondes, je n'obtiens pas d'erreur, il fonctionne très bien après 5 à 10 minutes, j'obtiens cette erreur dans les poissons de verre serveur.

D'erreur:
AVERTISSEMENT: StandardWrapperValve[genric.ApplicationConfig]: Servlet.service() de la servlet genric.ApplicationConfig jeté exception
java.lang.OutOfMemoryError: Java heap space

Je ne sais pas pourquoi j'obtiens cette erreur et comment résoudre ce problème.
Quelqu'un peut-il m'aider.

C'est mon webservice code:

public String gettweets(String st)
{
 cluster=Cluster.builder().addContactPoint("localhost").build();    
 session=cluster.connect("space");
 String query ="select * from tweet_count where createdtime='"+st+"' allow filtering;";
 ResultSet result = session.execute(query);
 String text = "[";
 for(Row r : result){
    System.out.println(r.getString("tag_name"));
   text+="{\""+"x"+"\":\""+r.getString("tag_name")+"\",\""+"y"+"\":\""+r.getInt("count")+"\"},";

}
text=text.substring(0,text.length()-1);
text+="]";

    return text;
}

C'est mon code de la page web:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body onload="load();grid();marqueeload();" style="background-color:white">
<pre style="height:25px;background-color:black;">
<div id = "title" style = "text-align:center;font-size:20px;width:100%;"><span>REAL TIME TWITTER TRENDS</span></div>
</pre>      
<div><table>
<tr><td><lable>Select Date<lable></td><td>  :  </td><td><input id="datepicker" type="text" /></td></tr></table>
</div>
<div style = "width:100%">
<div id="container2" style = "width:670px;height:300px;float:left;background-color:white;border: 1px solid green;">
<div style = "text-align:center;font-size:20px;"><span1>CHART VIEW<span1></div>
<div id="container1"></div>
</div>
<div id="container3" style = "width:670px;overflow-y:auto;height:300px;float:right;background-color:white;border: 1px solid green;"> 
<div style = "text-align:center;font-size:20px;"><span1>GRID VIEW<span1></div>                                  
<div id="Grid"></div>
</div>
</div> 
<div style = "width:100%;border: 1px solid green;height:300px;float:left;background-color:white;">
<div style = "text-align:center;font-size:20px;"><span1>Trending tweets<span1></div>
<marquee id = "marqueeid" direction="up" height="200" scrollAmount=2 scrollDelay=130 class="sidelink" onMouseDown="this.stop()" onMouseOver="this.stop()" onMouseMove="this.stop()" onMouseOut="this.start()" vspace="10" >
</marquee>
</div>
<script type="text/javascript" language="javascript">
function marqueeload()
{
var str;
$.get("http://localhost:8080/WebApplication1/webresources/generic", function(str)
{
str=str.slice(12, str.length-14);
var div=document.getElementById('marqueeid');
div.innerHTML=str;
});
}
$(function () {
$("#datepicker").ejDatePicker({
select: "onSelected"
});
$("#datepicker").ejDatePicker({ enabled: true });
});
function onSelected(args) {
var str = args.value;
var newstr = str.split("/",3);
if(newstr[0].length == 1){
newstr[0] = '0'+newstr[0];
}
if(newstr[1].length == 1){
newstr[1] = '0'+newstr[1];
}
var dat = newstr[2]+'-'+newstr[0]+'-'+newstr[1];
window.datetweet = dat;
$("#container1").ejChart("destroy");
grid();
load();
}
function load() {
var str;    
$.get("http://localhost:8080/WebApplication1/webresources/time/"+window.datetweet,      function(str)
{
str=str.slice(12, str.length-14);
var data=JSON.parse(str);
$("#container1").ejChart(
{
primaryXAxis:
{
title: { text: 'Tagname' },
labelRotation: 45
},
primaryYAxis:
{
range: { min: 0, max: 1000, interval: 100 },
title: { text: 'Count' }
},
commonSeriesOptions: {
type: 'column', animation: true,
tooltipFormat: "#point.x# : #point.y#"
},
series: [
{
points: data,
}
],
load:"loadTheme",
showTooltip: true,
needResize:true,
size: { height: 300 },
legend: { visible: false, position: 'top' }
});
});
}
$(document).ready(function()
{
$("#Grid").ejGrid({
dataSource: [],
allowPaging: true,
allowSorting: true,
columns: [
{ field: "x", headerText: "Trend Name", textAlign: ej.textAlign.Right, width: 10 },
{ field: "y", headerText: "Count", textAlign: ej.textAlign.Right, width: 10 }
]
});
});
function grid()
{
var str;
var url="http://localhost:8080/WebApplication1/webresources/time/"+window.datetweet;
$.get(url, function(str)
{
str=str.slice(12, str.length-14);
var obj=JSON.parse(str);
var instance = $("#Grid").ejGrid("instance");
instance._dataManager = new ej.DataManager(obj);
$("#Grid").ejGrid("model.dataSource", instance._dataManager);
});
}
window.setInterval(function() { load(); grid(); marqueeload(); }, 10000);
</script>
</body>
</html>
  • je suppose que vous avez trop d'objet en mémoire...vous devez configurer les paramètres de la mémoire; rapidement....vous pouvez utiliser quelque chose comme ça: -Xms750m -Xmx2048m -XX:MaxPermSize=1024m lorsque vous démarrez votre application
  • Vous pouvez avoir besoin de vérifier les fuites de mémoire. Imprimer le plein de trace de pile pour vérifier la cause.
  • La raison la plus courante pour les cas similaires à la vôtre serait probablement une fuite de ressources dans les flux d'entrées-sorties, vous aurez besoin de publier votre source si vous souhaitez une aide supplémentaire si.
  • J'ai posté le code source... pouvez-vous m'aider @Plafond
  • Vérifier le jeu de résultats de la taille, est-il trop grand ? Fermez toutes vos ressources comme le jeu de résultats, de connexion de session, etc une fois fini votre travail.
  • Une fois que vous pensez que vous vous êtes fait faire des choses avec votre s'est ouverte objet de la session qui s'ouvre à session=cluster.connect("space"); essayer, en appelant un session.close() sur elle pour libérer les ressources.
  • Merci @Plafond je vais essayer cela.

InformationsquelleAutor Suresh Ram | 2014-04-29