1.lanmbda表达式使用  lanbmda表达式的作用: A: 取代内部类 B;增加对集合的操作,从而增强其性能…
第6章 类文件结构 1. 无关性 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(即扩展名为 .class 的文件) 是构成平台无关性的基石. 字节码(即扩展名为 .class 的文件)不面向任何特定的处理器,只面向虚拟机. 实现语言无关性的基础仍是虚拟机和字节码存储格式.Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联.Class文件包含了java虚拟机指令集和符号表以及若干其他辅助信息.任一门功能性语言都可以表示为能被…
一般的内存分配是指堆上的分配,但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配.对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下直接分配在老年代中,分配的规则并不是百分之百固定的.细节取决于哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置. 一.对象优先在Eden分配 优先在新生代的Eden区中分配,当不够时,发起一次Minor GC. 二.大对象直接进入老年代 需要连续大量内存空间的Java对象,长字符串和数组等. 三.…
要实现虚拟机,其实人们主要考虑完成三件事情: 第一,哪些内存需要回收: 第二,什么时候回收: 第三,如何回收. 第二节,对象已死吗    垃圾收集其实主要是针对java堆里面的数据来说的,传统的垃圾收集方法主要是基于引用计数算法,比如windows里面的com或者是actionscript3里面的flash player,以及python语言,但是引用计数算法无法解决对象之间互相影响的问题.所以Java语言没有选用这种方式.    现在主流的商用语言,比如java,c#,都是采用可达性分析的算法…
1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言. Java的垃圾收集(Garbage Collection)主要关注堆和方法区的内存回收. 在GC堆进行回收前,第一件事情就是要确定哪些对象还活着,哪些对象已经死亡,需要被回收. 判断对象是否存活的算法: 1)引用计数器(Reference Counting)[Java的GC不使用此算法]:      给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值减1,计数器为0的对象就是…
一.JDK的命令行工具 1.jps:虚拟机进程状况工具 功能:可以列出正在运行的虚拟机进程,并显示虚拟机执行朱磊名称以及这些进程的本地虚拟机唯一ID. 2.jstat:虚拟机统计信息监控工具 Jstat是用于监视虚拟机各种运行状态信息的命令行工具,它可以显示本地或者远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据,在没有GUI图形界面,只提供了出我嫩本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具. 3.jinfo:Java配置信息工具 作用是实时地查看和调整虚拟机…
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local Virtual Machine Identifier)省略主类的名称. -m 输出虚拟机进程启动时传递给主类的main函数的参数 -l 输出主类全名,如果进程执行的时jar包,输出Java路径    -v 输出虚拟机进程启动的jvm参数,显示指定的参数列表,默认参数无法查看 jstat命令: 作用:…
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local Virtual Machine Identifier)省略主类的名称. -m 输出虚拟机进程启动时传递给主类的main函数的参数 -l 输出主类全名,如果进程执行的时jar包,输出Java路径    -v 输出虚拟机进程启动的jvm参数,显示指定的参数列表,默认参数无法查看 jstat命令: 作用:…
Java内存区域与内存溢出异常 运行时数据区域 程序计数器 用于记录从内存执行的下一条指令的地址,线程私有的一小块内存,也是唯一不会报出OOM异常的区域 Java虚拟机栈 Java虚拟机栈(Java Virtual Machine Stack)是线程私有的,它的生命周期与线程相同.虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表.操作数栈.动态连接.方法出口等信息.每一个方法被调用直至执行完毕的过…
Java内存区域与内存溢出异常 运行时数据区域 程序计数器 用于记录从内存执行的下一条指令的地址,线程私有的一小块内存,也是唯一不会报出OOM异常的区域 Java虚拟机栈 Java虚拟机栈(Java Virtual Machine Stack)是线程私有的,它的生命周期与线程相同.虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表.操作数栈.动态连接.方法出口等信息.每一个方法被调用直至执行完毕的过…