Results 1 to 2 of 2
  1. #1
    Redefine12 is offline Member
    Join Date
    Feb 2012
    Rep Power

    Default Performance tuning to eliminate java.lang.OutOfMemoryError: Java heap space - JTable

    I've got a major problem. I've put in weeks of work on my first real java application which pulls a .csv file into a JTable. I've been using small sample data sets to be able to test code quickly. Yesterday I attempted to run the app using the full data set, a .csv containing 342697 rows and 53 columns of data, and encountered heap space Out of Memory. The table uses DefaultTableModel model; built from Object[][] data and String[] colNames. What I'm attempting to do to resolve is to Scan in chunks of 100000 records into a Object[][] data 1, add that set to table model, then do
    Java Code:
    data1 = null;
    in an attempt to get the garbage collector to clear it out of memory. I'm still receiving the heap space Memory error. I've increased the memory allocation in my .ini file as well. I'm at my wits end here because if I can't pull this off, all my work has been for nill. Below is the snippet of code as I've tried to implement to use garbage collection to resolve. I know this isn't an SSCCE, but I Can anyone weigh in on why the garbage collector isn't clearing the unneeded objects from memory? Possible solutions? I'd really appreciate any help I can get!

    Java Code:
    //Get the JTable and return it    
        JTable getTable() throws IOException    { 
        	File f = new File("C:\\PCQ\\A_R.csv");
        	Scanner s = new Scanner(f);
        	String[] colNames = { 
        	 int cols = colNames.length;    
    //Import CSV File into 2d array   	  
    	List<Object[]> list = new ArrayList<Object[]>();  
    		int c = 0;
    		while (/*s.hasNextLine() */c < 100000 ) {         
    			Object[] line = s.nextLine().split(","); 
    			for(int z = 0; z < 50; z++){				
    				list.add(new Object[] { 
    			list.add(new Object[] { 
    					(Boolean.FALSE),	//PRINT
    					(line[0]),  //'LAB_SVC',
    					(line[1]),  //'CUSTOMER',
    					(line[2]),  //'MODEL',
    					(line[3]),  //'SERIAL',
    					(line[4]),  //'ECN',
    					(line[5]),  //'NOMEN',
    					(line[6]),  //'SUB_CUST',
    					(line[7]),  //'METRL_C',
    					(line[8]),  //'FSCM',
    					(line[9]),  //'UIC',
    					(line[10]),  //'LAB_SCHED',
    					(line[11]),  //'PROC_USED',
    					(line[12]),  //'VALUE_FIXD',
    					(line[13]),  //'NSN',
    					(line[14]),  //'PART_OF',
    					(line[15]),  //'ON_SITE',
    					(line[16]),  //'STD_CAL',
    					(line[17]),  //'LABEL_SVC',
    					(line[18]),  //'PLANT_ACCT',
    					(line[19]),  //'SUB_CAT',
    					(line[20]),  //'PHASE',
    					(line[21]),  //'PROC_APPR',
    					(line[22]),  //'SHOP_INV',
    					(line[23]),  //'STD_CLASS',
    					(line[24]),  //'STD_TYPE',
    					(line[25]),  //'STATUS',
    					(line[26]),  //'TYPE_EQUIP',
    					(line[27]),  //'ICN',
    					(line[28]),  //'FLAG_MC',
    					(line[29]),  //'EQUIP_STAT',
    					(line[30]),  //'DELAY_CD',
    					(line[31]),  //'COND_EQUIP',
    					(line[32]),  //'INST_SPCL',
    					(line[33]),  //'HRS_STD',
    					(line[34]),  //'METRL_N',
    					(line[35]),  //'DT_SYS',
    					(line[36]),  //'DT_RCVD',
    					(line[37]),  //'DT_INDUCT',
    					(line[38]),  //'DT_DELAY',
    					(line[39]),  //'DT_REPTD',
    					(line[40]),  //'DT_LSTCAL',
    					(line[41]),  //'DT_NXTDUE',
    					(line[42]),  //'DT_RECALL',
    					(line[43]),  //'DT_CMPL',
    					(line[44]),  //'DT_CREATE',
    					(line[45]),  //'COST',
    					(line[46]),  //'CAT_CUS',
    					(line[47]),  //'CAT_LAB',
    					(line[48]),  //'LAB_TYPE',
    					(line[49]),  //'ACC_CODE',
    					(line[50])//,  //'FLAG_OFFLN',
    					//(line[51])  //'DTC_REIND',
    		int rows = list.size();
    		int numberOfColumns = 15; 
        	Object[][] data = new Object[rows][cols];    
    		for (int i = 0; i < rows; i++) {        
    			data[i] = list.get(i);     
    //Create model for JTable 		
        	model = new DefaultTableModel(data, colNames) {   		
        		public boolean isCellEditable(int rowIndex, int mColIndex) {
        			if(mColIndex > 0){
        			return false;
        			else return true;
        	public Class getColumnClass(int col) {
        	Object o = getValueAt(0, col);     
        	if(o == null){                 
        		return Object.class;   
        	else     {         
        		return o.getClass();   
        	data = null;
        	list = null;
    		List<Object[]> list2 = new ArrayList<Object[]>();  
    		int c2 = 99999;
    		while (/*s.hasNextLine() */c2 > 99998 && c2 < 200000 ) {         
    			Object[] line2 = s.nextLine().split(","); 		
    			list2.add(new Object[] {
    					(Boolean.FALSE),	//PRINT
    					(line2[0]),  //'LAB_SVC',
    					(line2[1]),  //'CUSTOMER',
    					(line2[2]),  //'MODEL',
    					(line2[3]),  //'SERIAL',
    					(line2[4]),  //'ECN',
    					(line2[5]),  //'NOMEN',
    					(line2[6]),  //'SUB_CUST',
    					(line2[7]),  //'METRL_C',
    					(line2[8]),  //'FSCM',
    					(line2[9]),  //'UIC',
    					(line2[10]),  //'LAB_SCHED',
    					(line2[11]),  //'PROC_USED',
    					(line2[12]),  //'VALUE_FIXD',
    					(line2[13]),  //'NSN',
    					(line2[14]),  //'PART_OF',
    					(line2[15]),  //'ON_SITE',
    					(line2[16]),  //'STD_CAL',
    					(line2[17]),  //'LABEL_SVC',
    					(line2[18]),  //'PLANT_ACCT',
    					(line2[19]),  //'SUB_CAT',
    					(line2[20]),  //'PHASE',
    					(line2[21]),  //'PROC_APPR',
    					(line2[22]),  //'SHOP_INV',
    					(line2[23]),  //'STD_CLASS',
    					(line2[24]),  //'STD_TYPE',
    					(line2[25]),  //'STATUS',
    					(line2[26]),  //'TYPE_EQUIP',
    					(line2[27]),  //'ICN',
    					(line2[28]),  //'FLAG_MC',
    					(line2[29]),  //'EQUIP_STAT',
    					(line2[30]),  //'DELAY_CD',
    					(line2[31]),  //'COND_EQUIP',
    					(line2[32]),  //'INST_SPCL',
    					(line2[33]),  //'HRS_STD',
    					(line2[34]),  //'METRL_N',
    					(line2[35]),  //'DT_SYS',
    					(line2[36]),  //'DT_RCVD',
    					(line2[37]),  //'DT_INDUCT',
    					(line2[38]),  //'DT_DELAY',
    					(line2[39]),  //'DT_REPTD',
    					(line2[40]),  //'DT_LSTCAL',
    					(line2[41]),  //'DT_NXTDUE',
    					(line2[42]),  //'DT_RECALL',
    					(line2[43]),  //'DT_CMPL',
    					(line2[44]),  //'DT_CREATE',
    					(line2[45]),  //'COST',
    					(line2[46]),  //'CAT_CUS',
    					(line2[47]),  //'CAT_LAB',
    					(line2[48]),  //'LAB_TYPE',
    					(line2[49]),  //'ACC_CODE',
    					(line2[50])//,  //'FLAG_OFFLN',
    					//(line2[51])  //'DTC_REIND',
    		int rows2 = list2.size();
        	Object[][] data2 = new Object[rows2][cols];    
    		for (int i = 0; i < rows2; i++) {        
    			data2[i] = list2.get(i);     
        	for(int z = 0; z < rows2; z++){
        		model.insertRow(z, data2[z]);
        	data2 = null;
        	list2 = null;

  2. #2
    Redefine12 is offline Member
    Join Date
    Feb 2012
    Rep Power

    Default Re: Performance tuning to eliminate java.lang.OutOfMemoryError: Java heap space - JTa

    I've also just attempted explicitly calling the Garbage Collector after setting the object to null:

    Java Code:
    to no avail!

Similar Threads

  1. Replies: 4
    Last Post: 09-18-2011, 08:17 PM
  2. java.lang.OutOfMemoryError: Java heap space
    By kapil1089theking in forum Java Applets
    Replies: 1
    Last Post: 03-15-2011, 08:55 AM
  3. java.lang.OutOfMemoryError:Java heap space
    By newbiejava in forum New To Java
    Replies: 3
    Last Post: 08-22-2010, 09:00 AM
  4. Replies: 5
    Last Post: 08-13-2010, 10:04 AM
  5. java.lang.OutOfMemoryError: Java heap space
    By vidjogamer in forum New To Java
    Replies: 3
    Last Post: 02-06-2009, 06:52 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts