- 博客(6)
- 收藏
- 关注
原创 jvm----类与类加载器
类与类加载器:每一个类加载器,都拥有一个独立的类名称空间。比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义。从java虚拟机角度划分类加载器:1.启动类加载器,是虚拟机自身的一部分 2.所有其他的类加载器,独立于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoade...
2018-06-15 10:37:41 145
原创 jvm----虚拟机类加载机制
虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。java类型的加载、连接和初始化过程都是在程序运行期间完成的,java可动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。类生命周期:加载、验证、准备、解析、初始化、使用、卸载其中加载、验证、准备、初始化和卸载顺序是确定的(互相交...
2018-06-14 17:14:35 195
原创 jvm调优
高性能硬件部署方案:1.通过64位jdk来使用大内存 2.使用若干个32位虚拟机建立逻辑集群来利用硬件资源通过64位jdk来使用大内存要求:需要应用程序的full gc频率控制的足够低(大多数对象生存时间不应太长,尤其不能有成批量、长生存时间的大对象产生),譬如十几小时乃至一天才出现一次,这样可以通过在深夜执行定时任务的方式触发full g...
2018-06-14 09:50:45 176
原创 jvm----常用垃圾收集算法
标记-清除算法:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。不足:1.效率问题 2.空间问题,标记清除后会产生大量不连续的内存碎片,在分配较大对象时,无法找到足够的连续内存复制算法:将内存按容量大小划分为大小相等两块,每次只使用一块。当这块内存用完了,就将还存活的对象复制到另外一块,然后再把已使用过的内存空间一次性清理掉。不足:内存缩小为原来一半,代价太高标...
2018-06-11 11:04:19 145
原创 jvm-----垃圾对象回收过程
判断对象是否存活算法:引用计数算法:对象中添加一个引用计数器,每当有一个地方引用时,计数器值就加1;引用失效时,计数器值就减1;计数器为0的对象就是不再被使用的。 缺点:java虚拟机不使用其管理内存原因是它很难解决对象之间相互循环引用的问题可达性分析算法(java,c#):通过一系列称为gc roots的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到g...
2018-06-06 15:47:16 746
原创 jvm-----java内存区域及内存溢出异常
线程内存jvm有一个主内存,每个线程有各自的工作内存。线程中变量的读取先从主内存中取到再做修改,最后再同步给主内存(特殊情况除外)内存划分java内存可分为堆内存和栈内存(这种分法比较粗糙)栈内存及虚拟机栈,或者说是虚拟机栈中局部变量表部分。局部变量表存放了编译期可知的各种基本数据类型、对象引用类型(不等同于对象本身,可能是一个指向对象起始地址的引用指针,也可能是一个代表对象的句柄或者与此对象相关...
2018-06-05 15:26:35 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人