Java 的内存机制(伪序)

很长一段时间我都在为自己是一名“Java程序员”而烦恼;其他同学都在热火朝天的讨论C/C++的指针,问到我的时候,我只能苦笑“系统已经帮我做了”;“我不知道,自动回收了”。事实上语言并没有高下之分,可惜我还远未达到那个层次。后来慢慢体会到:

“Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来”

于是乎,下定决心了解Java的内存管理,以待将来“吹NB”用。

我是从操作系统的内存管理机制开始的,可惜从计算机组成,到计算机体系,再到操作系统 涉及内存的东西太多了,短时间内根本不可能有所收益,在我这个层次的开发来讲这些东西确实只是理论而已——没到那一步呢——不考虑南桥,北桥,以及高速缓存,多级缓存,多核处理,虚拟内存,系统内存管理,内存控制器等等这些细节,把他们交给硬件厂商和操作系统去操心,知道有这些东西就行;或者留待某个月圆之夜化身狼人之后再去理解。

从操作系统来讲,内存管理主要需要考虑四个问题,对应到Jvm上来:

1.当把一个快调入高一层存储器时,可以放到那些位置上?(映射规则)
对象是如何存储的?(顺序?位置?大小?)

2.当所要访问的块在高一层存储器时,如何找到该块?(查找算法)
虚拟机如何查找所需要的对象?如何调用函数?

3.当发生失效时,应该替换哪一块?(替换算法)
对象的清理

4.当进行写访问时,应进行哪些操作?(写策略)
流(I/O),文件以及其他I/O设备

把问题明确出来了,那么心中至少就有了一个方向了,而且可以按照这些问题可以建立起索引结构,不用担心忘记,也可以打败“害怕不全面的心理”

嗯,是的,该出发了!

说明:

这个分类下的文章基本上摘自:

《Java语言规范》

《Java虚拟机规范》

《深入Java虚拟机》

《深入理解Java虚拟机》

或进行了筛检,或加了自己的想法,但很多都是直接抄的,谢谢他们!

这个分类下的文章除商业用途外可以随意转载,请标注引用的上面这四份资料!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值