JVM内存概念

2017-12-08 13:40:08

JVM java虚拟机
  • 栈区(stacksegment)存放函数的参数值,局部变量值等,在超过这个变量的作用域时就会被系统自动释放掉存在于JVM内存中的资源

    优点:存取速度比堆块
    缺点:存在栈中的数据大小与生存期必须是确定的,无灵性
    例如
        for(int i=0;i<3;i++)
        {
            System.out.println(i);
        }
        System.out.println(i);
    如果我们在for外调用i,那么就会报错.当超出for循环的作用域时,变量(i)说会被系统释放掉
  • 堆区(heapsegment)存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收

        Scanner in = new Scanner(System.in);
    优点 :可以动态分配JVM内存
    缺点:要在运行时分配JVM内存,速度慢
    如上文中的Scanner就是存放在堆区的
  • 静态区
  • 代码区