JVM基础:深入学习JVM堆与JVM栈( 六 )

对象 , 从某种意义上说 , 是由基本类型组成的 。 可以把一个对象看作为一棵树 , 对象的属性如果还是对象 , 则还是一颗树(即非叶子节点) , 基本类型则为树 的叶子节点 。 程序参数传递时 , 被传递的值本身都是不能进行修改的 , 但是 , 如果这个值是一个非叶子节点(即一个对象引用) , 则可以修改这个节点下面的所有内 容 。

JVM堆和JVM栈中 , JVM栈是程序运行最根本的东西 。 程序运行可以没有JVM堆 , 但是不能没有JVM栈 。 而JVM堆是为JVM栈进行数据存储服务 , 说白了JVM堆就是一块共享的内存 。 不过 , 正是因为JVM堆和JVM栈的分离的思想 , 才使得Java的垃圾回收成为可能 。

Java中 , JVM栈的大小通过-Xss来设置 , 当JVM栈中存储数据比较多时 , 需要适当调大这个值 , 否则会出现java.lang.StackOverflowError异常 。 常见的出现这个异常的是无法返回的递归 , 因为此时JVM栈中保存的信息都是方法返回的记录点 。

推荐阅读