1、jvm的内存分配?
栈区,堆区(创建对象的方法),方法区
堆区的对象不被引用时,会被jvm的GC回收;看是否被引用主要是看有没有被栈区和方法区引用。
创建对象的前2者方式都需要显式地调用构造方法. 造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用.
栈中用来存放一些原始数据类型的局部变量数据和对象的引用(String,数组.对象等等)但不存放对象内容;
堆中存放使用new关键字创建的对象。
1、基本数据类型的变量和对象的引用都是在栈分配的;
2、堆内存用来存放由new创建的对象和数组;
3、类变量:(static修饰的变量),程序在一加载的时候就在堆中为类变量分配内存,堆中的内存地址
存放在栈中;
4、实例变量:当你使用java关键字new的时候,系统在堆中开辟并不一定是连续的空间分配给变量,是根
据零散的堆内存地址,通过哈希算法换算为一长串数字以表征这个变量在堆中的"物理位置”,实例变量的
生命周期--当实例变量的引用丢失后,将被GC(垃圾回收器)列入可回收“名单”中,但并不是马上就释
放堆中内存;
5、局部变量: 由声明在某方法,或某代码段里(比如for循环),执行到它的时候在栈中开辟内存,当局
部变量一但脱离作用域,内存立即释放。
2、jsp为啥不用try……catch……,或者说jsp如何抛异常?
JSP里应该不强制捕捉任何异常的。服务器框架已经帮你捕捉了。
JSP获取异常信息的exception对象:用来处理JSP文件执行时发生的所有错误和异常,只有在
page指令中设置isErrorPage="true"的页面中才能使用;
3、数据库分页查询
#查看表结构
DESC t_user
MySql中:limit函数
#此处的2表示索引为2的数据;如果id从1开始,那么查询出来的就是从id为3开始的连续4个结果
SELECT * FROM t_user LIMIT 2,4;
Oracle中: --oracle分页
select * from (select rownum r,e1.* from (select * from emp order by sal) e1 where rownum <=8 ) where r >=5;