Java内存结构及参数的传递

Java的内存结构:

堆内存:new,构造函数对类属性的初始化;

栈内存:测试函数



Java参数传递:

直传递;


引用:


可变参数:

可变参数是从JDK1.5中加入的语法,是指其参数可以是0个,可以是1个,2个,3个,n个,用表示。类似数组的概念,可变参数必须放在参数列表的最后且一个方法只能包含一个这样的参数,在方法体内被当做数组处理。

publci int compute(int …args)
{
    int sum=0;
    for(int i:args)
{
    sum+=I;
}
return sum;
}

对象的释放:


内存泄露:是指内存空间不够时,超出内存的最大限制。Java可以自动回收空间,使用GC垃圾回收(Garbage Collector),它有以下的特点:
1.回收无用的对象的内存空间
2.判断一个对象的内存空间是否无用
3.不可以强制执行
4.不能保证一个无用的对象一定被垃圾收集及收集
5.无法得知哪个对象被首先回收
6.可以将对象的引用变量初始化为null值,来暗示垃圾收集及收集该对象,如果该对象连接了监视器,不能被回收,要清除监视器,才可以回收
7.与垃圾收集及收集相关联还有Object.finalize(),fianlize->栈上jni,java调用c,c++,gc->堆上,有三种情况 1)所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候. 2)程序退出时为每个对象调用一次finalize方法。 3)显式的调用finalize方法 除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因. 简单来讲,finalize()是在对象被GC回收前会调用的方法,而System.gc()强制GC开始回收工作纠正,不是强制,是建议,具体执行要看GC的意思简单地说,调用了 System.gc() 之后,java 在内存回收过程中就会调用那些要被回收的对象的 finalize() 方法。

信息的封装和隐藏:

Java中通过将数据声明为私有的(private),再提供公开的(public)方法:getXXXsetXXX实现对该属性的操作,以实现下述目的:

隐藏一个类的实现细节;

使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

便于修改,增强代码的可维护性;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值