首页 > 代码库 > jvm
jvm
jvm,作为java平台通用性的实现基础,重要性不言而喻。
1.开发新项目,写运行脚本时要运用相关知识,确定jvm参数
2.维护老项目,需要对jvm进行性能调优
jvm内存划分:
1.程序计数器
2.虚拟机栈,局部变量,操作数等。当方法需要的栈深度超过规定的最大深度,会报stackFlowOver异常
3.堆,对象分配
4.本地方法栈,native方法使用
5.方法区(包括运行常量池),常量,静态变量以及类的相关信息,Class对象(比较特殊)也在这里
6.直接内存,比如nio就会使用直接内存,减少了java堆和native堆之间来回复制数据
各区内存不足时会报出outOfMemory异常
垃圾收集策略
1.如何判断对象已死:
- 引用计数器。缺点:循环引用,可能会现判断失误
- 根引用是否可达。根引用的定义:虚拟机栈中的引用,方法区的常量引用和静态变量引用,native方法的引用
2.强 软 弱 虚引用的相关介绍见另一篇博文
垃圾回收算法
1.标记清除,cms收集器(用于老年代的垃圾回收)使用该算法。缺点在于容易产生碎片。
2.标记整理。缺点:开销大。
3.复制。缺点:因为要单独开辟区域用作复制,因此内存使用率下降。串行,并行收集器都使用该算法
4.分代,将堆内存分为新生代和老年代。不同代采用不同的垃圾回收算法。
垃圾收集器
1.串行收集器,单线程收集
2.并行收集器,多线程收集
3.并发收集器,垃圾回收与应用并行。
未完待续。。。
jvm
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。