对jvm的粗陋理解
由于最近需要用到后台的框架,但苦于基础知识太过薄弱。不得不把反射机制和设计模式看了几篇并做出一些实践。昨天在家把设计模式敲了八个,确实感觉到java的美妙。 这更加让我觉得,要想学好java,必须下苦功夫。这不仅是对将来工作的需要,更是我们一直以来学习的热情所在。
为了不让自己的学习成果随时间的推移而淡忘。赶紧来记下来以便以后学习。
这里必须说一下jvm的加载机制(网上大神那找的,方便自己复习):基本流程图
以及jvm的基本结构图:
经过亲自实践 ,我的jvm.cfg 在jre/lib/amd64/jvm.cfg, jvm.dll在jre/bin/server/jvm.dll
这里多线程的一个案例:
集中常见的垃圾回收算法:引用计数,标记清除,标记压缩,复制算法
需要注意的是:jvm使用垃圾回收器包装一些垃圾回收算法,在不同的场合采用不同的垃圾回收器
其又被分为:串行,并行,CMS,G1
类加载原理:
加载过程:
加载机制:
源码查看:
(备注:除了BootstrapClassLoader没有父类,其余都有父类;一般情况下,首先从App ClassLoader中调用findLoadedClass方法查看是否已经加载,如果没有加载,则会交给父类,Extension ClassLoader去查看是否加载,还没加载,则再调用其父类,BootstrapClassLoader查看是否已经加载,如果仍然没有,自顶向下尝试加载类,那么从 Bootstrap ClassLoader到 App ClassLoader依次尝试加载。)
另外记一下,我发现jre/lib/rt.jar70几兆,可能有点重要。 在这里插个眼 对了 记录下这个博客的地址:http://www.cnblogs.com/leefreeman/p/7429112.html