LANGUAGE/!$%!% ERROR NOTE 2017. 11. 3. 15:03

!markdown


# Java


### 1. Error (에러)


```log

java.lang.StackOverflowError

at java.util.regex.Pattern$Branch.match(Pattern.java:4110)

at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)

at java.util.regex.Pattern$Loop.match(Pattern.java:4295)

at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)

at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)

at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)

at java.util.regex.Pattern$Branch.match(Pattern.java:4114)

at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)

at java.util.regex.Pattern$Loop.match(Pattern.java:4295)

at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)

at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)

at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)

at java.util.regex.Pattern$Branch.match(Pattern.java:4114)

```




### 2. Problem (문제)


보통 `StackOverFlow` 에러는 무한 루프가 발생할 경우의 수를 간과했을 때 발생한다.


하지만, `복잡한 정규식`과 `큰 문자열`로도 일어날 수 있다.


정말 무수히 많은 경우의 수를 파악하려면 많은 검증 로직이 실행되어야 하기 때문일 것 같다.




### 3. Solved (해결)


기본적으로 JVM에 Stack의 메모리크기가 `512KB` 또는 `1MB`로 할당되어 있다.


부족하다면?


좋은 해결책인지는 모르겠으나, `Xss`이라는 JVM옵션으로 StackOverFlow가 발생하는 제한 수치를 늘릴 수 있다.


- 20MB 할당 예)

```

-Xss20m

```


### 4. ETC (기타)

- set initial Java heap size 

```

-Xms<size> 

```


- set maximum Java heap size 

```

-Xmx<size>

```


- set java thread stack size

```

-Xss<size> 

```



### 4. Reference (참고)


- java.lang.StackOverflowError while using a RegEx to Parse big strings: [https://stackoverflow.com/questions/7509905/java-lang-stackoverflowerror-while-using-a-regex-to-parse-big-strings](https://stackoverflow.com/questions/7509905/java-lang-stackoverflowerror-while-using-a-regex-to-parse-big-strings)


- java.lang.StackOverflowError – How to solve StackOverflowError: [https://examples.javacodegeeks.com/java-basics/exceptions/java-lang-stackoverflowerror-how-to-solve-stackoverflowerror/](https://examples.javacodegeeks.com/java-basics/exceptions/java-lang-stackoverflowerror-how-to-solve-stackoverflowerror/)


- How to increase Heap size of JVM [duplicate]: [https://stackoverflow.com/questions/6452765/how-to-increase-heap-size-of-jvm](https://stackoverflow.com/questions/6452765/how-to-increase-heap-size-of-jvm)