How to solve java.lang.OutOfMemoryError: Java heap space error
Solution 1
Answer:
Properly close the session object and cluster object
eg :
session.shutdown();
cluster.shutdown();
Thanks to @ceiling gecko
Solution 2
An OOM or OOME (OutOfMemoryError) simply means that the JVM ran out of memory. When this occurs, you basically have 2 choices:
- Allow the JVM to use more memory using the -Xmx VM argument. For instance, to allow the JVM to use 1 GB (1024 MB) of memory:
- Improve/Fix the application so that it uses less memory.
For moer info please go through this link
http://www.mkyong.com/eclipse/eclipse-java-lang-outofmemoryerror-java-heap-space/
Comments
-
Suresh Ram almost 2 years
I am working in real time project.
Working: I am getting data from twitter and moving the output to cassandra database and then using Testrestfull webservice i am getting the output in json format. And then finally outputs are displayed in wep page. i am using glass fish server to connect web service and web page. it is an real time project so i am refreshing my page in every 5 second.
First few seconds i am not getting any error it works fine after 5 to 10 minutes i am getting this error in glass fish server.
Error: WARNING: StandardWrapperValve[genric.ApplicationConfig]: Servlet.service() for servlet genric.ApplicationConfig threw exception java.lang.OutOfMemoryError: Java heap space
I dont know why i am getting this error and how to solve this. Can any one help me.
This is my 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; }
This is my web page code:
<!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>
-
Ceiling Gecko about 10 yearsTo whomever is reading this please do note however, that if a resource leak is present then increasing the JVM available memory or changing the application to use less memory will only delay the inevitable JVM crash when the memory overflows. In layman terms, you can make the hole in the ship smaller or make the ship larger but the water is still pouring in, and the ship will sink unless you plug the hole.
-
sql_dummy about 7 yearsand how exactly do we plug
-
Teshte over 5 years@sql_dummy The short answer would be by writing efficient code from a memory point of view..How to achieve this is a way too long/complex subject do discuss it here.