读jvm虚拟机的总结

昨日心血来潮,拿着jvm虚拟机狠狠的读了一遍,从自学到现在差不多2个月的时间,一直忙忙碌碌的学者java的各种知识,看得多,忘得也多,学到最多的其实是写代码的思想,代码实现并不难。可以说我们今天写java代码的轻松,是站在很多巨人的肩膀的原因。

首先谈谈虚拟机的内存:

书讲的很全面,但是对于初学者来讲,我个人觉得你需要搞明白三个内存就非常不错了。首先是栈内存,这里放了基础数据类型(int,char这些),也会放对象的引用。

我们再看看堆内存,可以说这一块内存是最重要的一块内存,你new出来的对象都是放在这里,需要注意的是,堆内存里面还有一块方法区,你new出来的对象里面的方法以及变量都会放到方法区里。这三块内存搞清楚之后,相比你更好奇,那么栈里的引用如何指向堆里的对象。

那么我在谈谈引用这一块:

书里讲到引用有两种方式,各有优缺点,那么第一种呢,就是会有一个中间池,处于引用与对象之间,这个中间池会帮助引用找到对象已经方法区里的方法与变量(中间池会有两个指针),至于优缺点,先让我讲讲下一种。另一种呢,则是没有这个中间池,指针直接放在栈内的引用里,但是注意,这里指针只会放一个指向对象的指针,因此在堆里的对象还会有一个指针来指向属于这个对象的变量与方法。那么第一种的有点是修改容易,但是效率会低一点。第二种呢,则是效率高,少了中间环节,但是由于指针在引用里,切换对象会一定程度影响效率。

讲到这里,我又忍不住想和大家唠唠这个内存泄漏和内存溢出:

内存泄漏:指的是一个程序占用内存,使用结束后,却不释放内存,这边是内存泄漏。

内存溢出:比如你的虚拟机的堆内存设置的是32mb,但是你一直往里面new对象,超出32mb后,则会出现内存溢出的报错。outofmemory。


那么了解到这两个概念以后,就得说说垃圾回收机制了。这个恐怕是java语言经典之一。欲知详情、请待我继续看书



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值