JVM -Xss调整Stack Space的大小 【转】

Java程序中,每个线程都有自己的Stack Space。这个Stack Space不是来自Heap的分配。所以Stack Space的大小不会受到-Xmx和-Xms的影响,这2个JVM参数仅仅是影响Heap的大小。

Stack Space用来做方法的递归调用时压入Stack Frame。所以当递归调用太深的时候,就有可能耗尽Stack Space,爆出StackOverflow的错误。Stack Space的大小随着OS,JVM以及环境变量的大小而发生变化。一般说来默认的大小是512K。在64位的系统中,这个Stack Space值会更大。一般说来,Stack Space为128K是够用的。这时你说需要做的就是观察。如果你的程序没有爆出StackOverflow的错误,可以使用-Xss来调整Stack Space的大小为128K。(eg:-Xss128K)

package org.thinking.jvm;

public class TestXSS {

    private static long count = 0;

    public static void main(String[] args) {
        infinitelyRecursiveMethod(1);

    }

    public static void infinitelyRecursiveMethod(long a){
        System.out.println(count++);
        infinitelyRecursiveMethod(a);
    }

}

通过上面的程序,你可以观察到你的JVM Stack Space是如何耗尽的,以及进入嵌套的层深。

时间: 2024-10-01 07:14:03

JVM -Xss调整Stack Space的大小 【转】的相关文章

JVM heap中各generation的大小(Sizing the Generations)

以下是对Java8官方文档 https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/sizing.html 这篇的翻译 ============= jvm初始化时, 会将-Xmx指定大小的内存空间预留, 如果-Xms小于-Xmx, 那么不会立即将所有空间给jvm, 未给予的部分为"virtual", 留给堆(heap)中的不同部分(老年代tenured generation和年轻代young generati

Java虚拟机JVM总结(一)JVM运行原理及JVM中的Stack和Heap的实现过程

Java语言写的源程序通过Java编译器,编译成与平台无关的'字节码程序'(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器. 一.JVM原理 1.JVM简介: JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器.它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序. java编译器只要面向JVM,生成JVM能理解

使用GParted调整ubuntu根目录空间大小

一.背景 Win10系统下安装ubuntu16.04双系统-常见问题解答 由于安装双系统时,ubuntu分区设置如下: 1) 主分区 ext4 / 30720MB 2) 主分区 swap area 8192MB 3) 逻辑分区 ext4 /boot 1024MB 4) 逻辑分区 ext4 /home 剩余的空间 后来在ubuntu16.04下默认路径安装MATLAB R2017b后,每次打开终端,会出现设备空间不足的提示,且不能使用tab键. 在终端输入:cd /ho按tab键时,显示错误: b

iOS模拟器太大 如何调整XCode5的模拟器大小

基于Xcode5创建一个project, 运行后,你会发现模拟器有点儿不爽. 早期的模拟器,那可真的称得上拟物化,特像一个手机的样子. 而Xcode5 模拟器运行后,是一个白板,而且是一个大大的白板. 竟然连 home 键都不见了. 首先要做的是,如何调整这个模拟器的大小. command + R  模拟器运行后, 再按 command +1. command+2. command+3, 试试看. 你会发现 模拟器的大小发生了变化. 其实,模拟器还是那个模拟器,只不过是等比缩放了而已.  操作方

jquery实现的拖动可以调整table单元格大小代码实例

jquery实现的拖动可以调整table单元格大小代码实例: 本章节介绍一下如果利用jquery实现表格单元格可以通过鼠标拖动调整大小的效果,当然如果让我们完全写代码的话,可能会比较的复杂,不过有现成的插件可以使用,只要简单的几个步骤就可以实现我们的要求. 一.引入相关库文件: 要使用相关插件,那就必须要引入相关的代码文件,如下: <script src="/js/jquery-1.8.0.min.js" type="text/javascript">&

调整oracle sga的大小导致 ORA-00851和ORA-00844错误

今天调整了下sga的大小,结果重启数据库的时候报如下错误. SQL>alter system set sga_max_size=1024M scope=spfile; SQL> shutdown immediate SQL> startup ORA-00844: Parameter not taking MEMORY_TARGET into account ORA-00851: SGA_MAX_SIZE 1073741824 cannot be set to more than MEMO

BIEE11g BI_server Jvm参数调整

1.找到user_projects\domains\bifoundation_domain\bin目录 2.复制startWeblogic.sh为新的文件startAdminWeblogic.sh,复制setDomainEnv.sh到setAdminDomainEnv.sh,复制setOBIDomainEnv.sh到setAdminOBIDomain.sh 3.修改startAdminWeblogic.sh 我的机器是windows调用的脚本都是cmd的,linux下面肯定都是.sh文件,把调用

Mac 上VitrualBox安装CentOS6.5 调整root分区的大小

安装centOS的时候因为选择了动态调整磁盘大小,所以分配磁盘空间的时候就没多想,直接用的default的8G,以为不够了自己会调整,没想到是个大坑 发现提示空间不足的时候root只有0k了.... 解决方法: 1. 先重新分配虚拟机VHD文件的大小, cd /Users/apple/VirtualBox VMs/centos VBoxManage modifyhd centos.vhd --resize 30000 这里30000的单位是MB,所以就是重新分配VHD文件为30G 2. 这个时候

无损扩容,调整Centos服务器分区大小,简明扼要

因为开始装的服务器用的自动lvm,后来发现home下分区太大了,/分区太小.zabbix报警空间已用80%,所以必须要压缩home分区给/目录 感觉乱乱的,整理一下使用的命令按顺序和思路,能完成的后面就不用看了: 1.umount /home ###如果发现busy不能卸载就fuser -m /home查看一下是什么进程在占用,然后kill -9 杀掉 2.resize2fs -p /dev/mapper/VolGroup-lv_home 20G ###先设置一下home的大小,做这部的时候会提