Why StackOverflow Error ? [Solved] | Sololearn: Learn to code for FREE!
Novo curso! Todo programador deveria aprender IA generativa!
Experimente uma aula grƔtis
+ 7

Why StackOverflow Error ? [Solved]

This is simple java program. In this program i just created two objects and nothing else. Anyone know why this error is comming. https://code.sololearn.com/c14nDb01b6M2/?ref=app

2nd Sep 2020, 2:22 PM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
24 Respostas
+ 5
P Jain you meant final keyword creating issue as per your last statement
3rd Sep 2020, 10:26 AM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
+ 5
P Jain šŸ˜‚ ok update
3rd Sep 2020, 10:30 AM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
+ 4
You are making a new object of a class that's constructor also makes a new object of itself and that further makes new object and so on! Again again and again! So we are making unlimited number of objects of this class! You can add a static variable that is increased when an object is made (i.e. constructor) and put an if statement (or a base case) to prevent this Error!
2nd Sep 2020, 2:34 PM
Namit Jain
Namit Jain - avatar
+ 4
Namit Jain What do you want to explain in this code.
2nd Sep 2020, 2:52 PM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
+ 4
Namit Jain we can put in block. If you heard about static and instance block.šŸ˜… And I'm not going to perform explicitly recursion
2nd Sep 2020, 3:15 PM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
+ 3
Pāˆ†WAN Māˆ†URYāˆ† Before calling constructor it call x1=new Program() ; This it self calls same class infinitely...
2nd Sep 2020, 2:37 PM
Jayakrishna šŸ‡®šŸ‡³
+ 3
Namit Jain which line creating issue?
2nd Sep 2020, 2:45 PM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
+ 3
Namit Jain if I will comment line 10 will it give me error ?
2nd Sep 2020, 2:48 PM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
2nd Sep 2020, 2:52 PM
Namit Jain
Namit Jain - avatar
+ 3
Namit Jain In this program you are explicitly creating a recursion and break it. In my question I didn't use this.
2nd Sep 2020, 3:05 PM
Pāˆ†WAN Māˆ†URYāˆ†
Pāˆ†WAN Māˆ†URYāˆ† - avatar
+ 3
Pāˆ†WAN Māˆ†URYāˆ† You cannot put an if statement outside a method šŸ˜šŸ¤” So, how will you stop it without if statement šŸ˜‘
2nd Sep 2020, 3:11 PM
Namit Jain
Namit Jain - avatar
+ 3
Pāˆ†WAN Māˆ†URYāˆ† yaa! Block is necessary šŸ™ƒ But i don't think we can declare variables here
2nd Sep 2020, 3:19 PM
Namit Jain
Namit Jain - avatar
+ 3
The most simple explanation here(For those who not understand stack and heap) : Basically you're initialising an object of the same class as a member variable. This causes the JVM to find the constructor of the Program which has not been invoked upon yet(because the JVM always inits the members first) so the constructor which is been called makes another call to the constructor and which again makes the same thing... Goes on... Results into Stack Overflow. Basically you can't create a final object of the same class as a member variable(because you'll have to initialize it either in class block or constructor block which'll cause Stack Overflow). you also can't initialize a normal member(in class or constructor block).
3rd Sep 2020, 10:18 AM
P Jain
P Jain - avatar
+ 3
Pāˆ†WAN Māˆ†URYāˆ† no I meant that object as a member variable initialisation is the cause of the error. Oops looked up now ... šŸ˜‚šŸ˜‚šŸ˜‚ By mistake final was typed... Wait I'll correct that.
3rd Sep 2020, 10:28 AM
P Jain
P Jain - avatar
+ 3
Pāˆ†WAN Māˆ†URYāˆ† corrected šŸ‘
3rd Sep 2020, 10:31 AM
P Jain
P Jain - avatar
+ 2
public class Program { // final Program x1 = new Program(); Program() { System.out.println("stack over?"); } public static void main(String[] args) { Program x1 = new Program(); } } Pāˆ†WAN Māˆ†URYāˆ† Before calling constructor it call x1=new Program() ; This it self calls same class infinitely.....
2nd Sep 2020, 2:32 PM
Jayakrishna šŸ‡®šŸ‡³
+ 2
Pāˆ†WAN Māˆ†URYāˆ† that there should be a limit! Like here there is a limit of 50 The class should not make its instance if it exceeds the provided limit (50)
2nd Sep 2020, 2:54 PM
Namit Jain
Namit Jain - avatar
2nd Sep 2020, 2:48 PM
Namit Jain
Namit Jain - avatar
2nd Sep 2020, 2:51 PM
Namit Jain
Namit Jain - avatar