jvm笔记

方法区:存放类信息,常量,static变量,字节码,类加载器

方法区和堆为线程共享,其余为线程私有

运行时常量池:字段,方法,接口等描述信息

对象的创建

        指针碰撞和空闲列表,都有并发问题,可以通过同步或TLAB,每个线程都分块地方,各自忙自己的

对象头

        存储哈希码,gc年龄,锁标记

不同的锁标志位,会导致32bit的数据展示的不一样,对象的hashcode在其他锁状态没有是因为存到其他地方了

创建对象

        创建对象有直接指针和句柄两种

        句柄

     句柄好处是比较规整,当数据移动后改个指针地址就可以了

         直接指针

         直接指针少了一些性能开销,但是直接操作堆内存,增加了一层风险

垃圾收集

        哪些内存要回收,什么时候回收,怎么回收

引用计数法,可达性分析法

        GCRoot:类变量,常量,锁对象,局部变量,类加载器,代码缓存

        强软弱虚:

                强,引用关系存在就不会回收,甚至报错也不清除。

                软,要发生内存问题就回收,用SoftReference创建。

                弱,下次垃圾回收就回收掉,WeakReference创建

                虚,多一个标记,最弱的引用关系

回收方法区

        所有实例都被回收

        对应的类加载器被回收

        无法反射获取

垃圾收集算法

        强分代:越从垃圾收集下活下来,越难被回收

        弱分代:大部分对象朝生夕灭,都是没

        跨引代:跨代引用相对于同代引用来说仅占极少数

记忆集:将老年代存在跨代引用的加入记忆集,垃圾回收找记忆集,不用再遍历老年代。减少性能开销

        标记清除算法

                遍历对象,标记活下来的对象,删除其余对象。

                        碎片化问题,如果标记“该死”对象,性能消耗大

                

        标记复制算法

                内存分一半,只操作一半内存的数据,标记活下来的放到另一半内存,原先内存数据全部删除

                内存使用效率低,简单

                优化:修改比例,两个存活的区域和新生区域1:1:8

                         标记整理算法

        标记活着的,统一放到一块地方,删除其他的。

                如果对象存活的多,总是移来移去,“拖家带口”性能消耗大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值