Stack Overflow - Java Tutorials

stack overflow


 

Ads

Tutorials   
Java final method Assert in Java Final method in java Autoboxing in Java assert In Java JDBC batch insert using Java bean class Java Singleton Pattern Java Collection API - Java Tutorials Stack Overflow - Java Tutorials End of Year Puzzle The link to the outer class,java tutorial,java tutorials Orientating Components Right to Left,java newsletter,java,tutorial Non-virtual Methods in Java - java tutorials Multicasting in Java - java tutorials,tutorial Creation Time Comparison of Multi Dimensional Array- Java Tutorials Making Exceptions Unchecked - java tutorial,java tutorials Making Enumerations Iterable - JDK 5 Example Which is Faster - LinkedList or ArrayList? LinkedHashMap - Java Tutorials HashMap and HashCode JDK 1.4 the NullPointerException - Java Tutorials Java HashMap - Java Tutorials Java GC java awt package tutorial Java Multi Dimensions Array - Java Tutorials Java HashSet  - Java Tutorials Java Field Initialisation - Java Tutorials Java Comments - Java Tutorials J2EE Singleton Pattern - Design Pattern Tutorials Java - JDK Tutorials garbage collection in java Final Methods - Java Tutorials Exceptional Constructors - Java Tutorials Double-checked locking,java tutorials,java tutorial Disassembling Java Classes - Java Tutorials Java Deadlocks - Java Deadlocks Tutorials, Deadlocks in Java Commenting out your code - Java Tutorials Class names don't identify a class - Java Tutorials Causing Deadlocks in Swing Code Exception in Java - Java Tutorials Catching Exceptions in GUI Code - Java Tutorials boolean comparisons - tutorial Interthread Communication in Java BASIC Java - Java Tutorials Thread Deadlocks - Java Tutorials Autoboxing unboxing in Java - Java Tutorials Assertion in Java Appending Strings - Java Tutorials Anonymous Inner Classes - Anonymous Inner Classes tutorial Assertion in java
Ads

Stack Overflow in Java

A stack is the part of the memory. The local automatic variable is created on this stack and method arguments are passed. When a process starts, it get a default stack size which is fixed for each process.  In today's operating system, generally, the default stack size is 1 Mb, which is enough for most of the process. Under abnormal condition, the stack limit exceeds. This is known as stack overflow.

The two most common reason for stack overflow are given below :

  • infinite recursion
  • allocating size greater than stack's limit

1. Infinite Recursion

The most common reason of stack overflow is Infinite Recursion. The infinite loop of recursion going on due to which stack's limit exceeds.

For example, take a look at given below code:

int f(){
g();
}
int g() {
f(); 
}

f() is calling g() and g() is calling f(). Due to this loop goes on infinitely. This cause stack overflow.

Catching the stack overflow

You can put the suspicious code under the try block and can catch the StackOverflowError exception. Given below code will give you clear idea how can you do this :

public class Example {
public static void endless() {
endless();
}

public static void main(String args[]) {
try {
endless();
} catch(StackOverflowError t) {
// more general: catch(Error t)
// anything: catch(Throwable t)
System.out.println("Caught "+t);
t.printStackTrace();
}
System.out.println("After the error...");
}
}

2. Allocating size greater than stack's limit

The second common reason for causing stack overflow is allocating size greater than stack's limit. For example in the given below example, the array size allocation exceeds the limit which cause the stack overflow :

int test()
{
int x[10000000]; // array is too large 
int y =0; //y's address exceeds the stack's limits, error
}

 

Advertisements

Ads
Share on Google+Share on Google+

Stack Overflow - Java Tutorials

Posted on: April 18, 2011 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Advertisements

 

Discuss: Stack Overflow - Java Tutorials  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:3
Tarun Bathla
March 1, 2012
Java

I just want explanation on error and its sub types. Can anybody help me
Ashish
October 4, 2012
Java Stack Over Flow

int x[10000000]; // array is too large The code is not how integer arrays are declared in Java.
Judy Lipinski
November 5, 2013
Your second example

Can you please correct your second example?

Ads

 

Ads