【J2SE】内存分析

         
        J2SE的很多点都讲解的很详细很经典,让人有一种醍醐灌顶的赶脚,尤其是内存分析这块,这是我的死穴啊,一直是模模糊糊的。看完视频之后,又经过小组的讨论总结,这块知识更加清晰了,下面来简单介绍一下我的理解。
        Java把内存划分为两种:一种是栈内存,另一种是堆内存。
【栈】
        栈内存中存放的是在方法中定义的变量和对象的引用变量,更准确的说是保存了引用的堆内存空间的地址。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该内存空间。
【堆】
        堆内存用来存放由new创建的对象(包括对象的属性)和数组,当new出来对象或数组之后,就会在堆中分配内存,在没有引用变量指向它之后,就由Java虚拟机的自动垃圾回收器来管理。
【堆栈联系】   
        在堆中产生了一个数组或者对象之后,可以再栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存汇总的首地址,栈中的这个变量就成了数组或对象的引用变量,引用变量就相当于是为数组或者对象起的一个名称。简单来说,栈中的变量指向堆中的变量,这就是java中的指针。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。
【小结】
        J2SE视频看完之后,回想自己的收获,最大的就是感觉以前学习的知识跟代码结合的更多了。从机房合作的事务的应用,到设计模式交流会上米老师强调要把UML类图和代码的结合理解,当时只是恍然大悟,原来事务可以这么用,原来设计模式的图是这样通过代码体现的,原来以前学的理论知识是可以应用的,是这样应用的。感觉又离专业进了一步。

你可能感兴趣的:(内存分析,J2SE)