How to solve java.lang.OutOfMemoryError: Java heap space error

56,133

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:

  1. 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:
  2. 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/

Share:
56,133
Suresh Ram
Author by

Suresh Ram

Developer, Analyzer, Learner and common man

Updated on July 12, 2022

Comments

  • Suresh Ram
    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
    Ceiling Gecko about 10 years
    To 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
    sql_dummy about 7 years
    and how exactly do we plug
  • Teshte
    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.