Cách cấu hình Stack size trong JVM

Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu cách cấu hình Stack size trong JVM.

Default Stack size

Mỗi thread trong JVM đều có một stack riêng dùng để lưu trữ các thông như biến local, các kết quả tính toán v.v Stack là một phần quan trọng trong JVM mà mọi triển khai của JVM đều phải sử dụng.

Mỗi khi JVM tạo một thread thì nó sẽ khởi tạo luôn stack cho thread đó. Nếu chúng ta không chỉ định stack size cụ thể thì nó sẽ sử dụng giá trị mặc định được định sẵn. Thông thường, stack size này phụ thuộc vào hệ điều hành và kiến ​​trúc máy tính.

Về cơ bản, chúng ta có thể xem 1 MB là kích thước của mỗi stack trong hầu hết các hệ điều hành và kiến ​​trúc hiện đại.

Tùy biến Stack size

Để thay đổi kích thước mặc định của Stack, chúng ta có thể sử dụng -Xss flag để chỉ định kích thước của mỗi stack khi được khởi tạo. Ví dụ để đặt kích thước của stack là 1MB thì chúng ta sẽ sử dụng Xss1048576.

java -Xss1048576 ...

Nếu không muốn tính kích thước theo byte, chúng ta có thể sử dụng một số ký tự dại diện cho đơn vị muốn sử dụng ví dụ – chữ k hoặc K để chỉ KB, m hoặc M để chỉ MB và g hoặc G để chỉ GB. Ví dụ: hãy xem một số cách khác nhau để đặt kích thước ngăn xếp thành 1 MB:

-Xss1m 
-Xss1024k

Tương tự như -Xss, chúng ta cũng có thể sử dụng -XX: ThreadStackSize để định cấu hình kích thước stack.

java -XX:ThreadStackSize=1024 ...

Tuy nhiên JVM cũng chỉ định rõ kích thước stack tối thiểu được chỉ định, chúng ta không thể cấu hình kích thước stack nhỏ hơn giá trị này.

$ java -Xss1K -version
The Java thread stack size specified is too small. Specify at least 144k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Tương tự cũng có một giá trị tối đa mà kích thước của stack không thể vượt qua.

$ java -Xss2g -version
Invalid thread stack size: -Xss2g
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit

Nguồn

https://www.baeldung.com/jvm-configure-stack-sizes

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x