码迷,mamicode.com
首页 > 编程语言 > 详细

Java习题10.25

时间:2017-10-25 15:26:17      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:.net   产生   对象   两种   垃圾回收器   image   堆内存   ima   函数   

Java习题10.25

1、

技术分享

 

 

实际上这道题考查的是两同两小一大原则:
方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型, 
子类抛出异常小于等于父类方法抛出异常, 
子类访问权限大于等于父类方法访问权限。

技术分享

 

2、

技术分享

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。

 

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。

 

堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

 

引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候(比如先前的引用变量x=null时),才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。

       

       以上段落来自于某一本Java程序设计的书中,实际上,栈中的变量指向堆内存中的变量,这就是Java中的指针
 
 
总结起来就是对象存储在堆内存,引用变量存储在栈内存。栈内存指向堆内存。

 

 3、

技术分享

出于运行速率的考虑,java编译器会把经常经常访问的变量放到缓存(严格讲应该是工作内存)中,读取变量则从缓存中读。但是在多线程编程中,内存中的值和缓存中的值可能会出现不一致。volatile用于限定变量只能从内存中读取,保证对所有线程而言,值都是一致的。但是volatile不能保证原子性,也就不能保证线程安全

 

 

4、

技术分享

DynaValidatorActionForm 动态验证表单
Validation 确认的意思

 

5、

 

Java习题10.25

标签:.net   产生   对象   两种   垃圾回收器   image   堆内存   ima   函数   

原文地址:http://www.cnblogs.com/Renyi-Fan/p/7728721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!