JVM
谁是回忆
这个作者很懒,什么都没留下…
展开
-
《深入理解JVM》第二章 JVM自动内存管理机制
概述 了解jvm 内存管理机制, 如果jvm 出现内存溢出,泄露的问题可以排查进行工作,运行时数据区域jvm 运行时会把内存进行划分,程序计数器是一块较小的内存,可以看作为,当前线程所执行字节码的一个行号指示器 ,字节码解释器就是通过改变计数器来选择执行的字节码指令,分支循环,跳转,异常处理,线程恢复等功能, JVM 的多线程机制是通过线程的轮流执行来实现...原创 2018-08-23 16:58:49 · 253 阅读 · 0 评论 -
《深入理解JVM》第十二章 高效并发(JAVA内存模型)
并发处理的广发应用使得Amdahl 定律代替摩尔定律成为了计算机性能发展原动力的根本原因,是人类压榨计算机计算能力的最有利的武器摩尔定律 : Intel CEO Barret 说没过18 个月芯片的性能就会翻一倍Amdahl定律:定义了串行系统并行化后的加速比的计算公式和理论上限 1/F+1/n(1-F) 增加CPU处理器的数量并不一定能起到有效的作用提高系统内可并行化的模块...原创 2018-08-14 09:50:47 · 341 阅读 · 0 评论 -
《深入理解JVM》第十二章 高效并发(JAVA与线程)
并发并不一定依赖多线程,(如php中常见的多进程并发) 但是java 中的并发和线程不开关系Thread类的大部分方法都是native方法, native方法意味着,这个方法没有使用和平台无关的手段实现,或者是无法使用,当然也可能是为了执行效率 实现线程主要有三种方式1. 内核线程实现, 2 ,使用用户线程实现3.用户线程加轻量级进程混合实现使用内核线程实现内核线程就是...原创 2018-08-15 21:44:59 · 458 阅读 · 0 评论 -
《深入理解JVM》第十三章 线程安全&& 锁优化
java 语言中的线程安全java把操作共享数据分为5 类 不可变 , 绝对线程安全, 相对线程安全, 线程兼容和线程对立不可变jdk5后,不可变(Immutable)的对象一定是线程安全的比如String 他的所有方法都是返回一个新的对象,(String 是不可变的,因此他和Stringbuffer StringBuilder 在拼接字符串的方面来比, string没有他们效率高...原创 2018-08-18 12:09:44 · 157 阅读 · 0 评论 -
《深入理解JVM》第三章 垃圾收集器与内存分配策略(HotSpot算法实现)
枚举根节点可达性分析从GC Roots 节点着引用链这个操作为例,可作为GC Roots 的节点主要在全局性的引用(常量或者类静态属性)与执行上下文(栈帧的本地变量表)中,现在很多应用仅仅方法区就有数百兆,如果要逐个检查这里面的引用那么必然会消耗很多时间另外,可达性分析的执行时间敏感还体现在GC停顿上,因为这项分析工作必须在一个能确保以一致性的快照中进行---这里的以执行指的是在分析期间执...原创 2018-08-18 19:15:44 · 128 阅读 · 0 评论 -
《深入理解JVM》第三章 垃圾收集器与内存分配策略(垃圾收集器)
垃圾回收算法是内存回收的方法论,垃圾回收器就是内存回收的具体实现,这里讨论的是jdk1.7 之后的Hotspot 虚拟机, java 的虚拟机规范没有明确规定垃圾回收方法,因此不同的jvm 不同的版本垃圾回收是有差异的,JDK1.7 提供G1收集器,之前实在试验器上图展示的是7 中收集器,应用的不同代,他们之间有连线的说明可以配合使用,垃圾收集器至今没有最完美的Serial 收集器...原创 2018-08-19 09:22:13 · 224 阅读 · 0 评论 -
《深入理解JVM》第三章 垃圾收集器与内存分配策略(内存分配和回收策略)
对象优先在Eden 上分配大多数情况下对象在新生区 的Eden区中分配,当Eden区没有空间的时候,jvm发起一次GC,这意思gc 幸存的对象会被复制到from 或者to 区,然后把Eden 区和 form 或者to区给清理掉,以后每次gc 幸存的对象age+1 如果年龄模式是大于15 晋级老年代,当然大对象有可能直接进入老年代,https://blog.csdn.net/Muyunde...原创 2018-08-19 16:30:32 · 363 阅读 · 0 评论 -
《深入理解JVM》第四章 虚拟机性能监控&&故障处理工具
jdk命令行工具jps虚拟机进程状态工具使用频率最高的就是jps jps 可以通过RMI协议查询开启了RMI服务的远程虚拟进程状态jstat 虚拟机统计信息监视工具用于监视虚拟机各种状态信息的命令行工具,可以显示本地或者远程虚拟机进程中的类装在,内存,垃圾收集,JIT编译,window 查看进程netstat -a jstat 一样,可跟参数jstat -gc id ...原创 2018-08-19 18:58:53 · 240 阅读 · 0 评论 -
《深入理解JVM》第七章 类加载器的时机 && 类加载器的过程
概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行效验,转换解析,连接初始化,都是在程序运行期间进行的,这种策略虽然会令类的加载提供一些性能开销,但是给java提供了很高的灵活性,java天生可以动态拓展的语言特性就是依赖运行时动态加载和动态链接的特点实现的,例如如果写一个面向接口的程序可以等到运行时再写具体的实现,用户可以通过java预定义的自定义类加载器让本地应用程序从网络或...原创 2018-08-23 11:12:49 · 1187 阅读 · 0 评论 -
《深入理解JVM》第七章 类加载器
虚拟机设计团队把类加载阶段中的“通过一个类的全限类名”来捕获描述这个类的二进制字节流,这个动作放入jvm 中,实现这个动作的代码叫做类加载器类加载器可以是java语言的一项创新,也是java 流行的主要原因之一,最初是为了满足java Applet的需求开发出来的,目前java Applet 没人听说话吧? 但是类加载器却在层次上划分,OSGI,热部署,代码加密,等领域大放异彩,成为java ...原创 2018-08-23 16:38:51 · 228 阅读 · 0 评论 -
《深入理解JVM》第三章 垃圾收集器与内存分配策略(对象已死吗 ? )
对象已死吗 ?引用计数算法给对象添加一个引用计数器,当有一个地方引用他就给他+1 , 如果有一个地方的引用失效就-1 ,实现简单,效率高,微软公司的COM(component object model) 技术,使用ActionScript3的Flashplaye ,python语言在游戏脚本领域被广泛使用的Squirrel 中都使用了引用计数器算法对内存进行管理,但是主流的java 虚...原创 2018-08-23 17:24:14 · 144 阅读 · 0 评论