
虚拟机JVM
文章平均质量分 59
shahuhubao
这个作者很懒,什么都没留下…
展开
-
JVM 基础(1)
JVM概念2004年发布JDK1.5:泛型,注解,装箱,枚举,可变长的参数,foreach循环PC寄存器:每一个线程拥有一个PC寄存器;在线程创建时创建纸箱下一条指令的地址执行本地方法时,PC的值为undifined(未定义的)方法区:保存装载的类的原信息 对类进行描述通常和永久区关联在一起,保存一些相对不变的信息,类的信息一般在运行的过程中不会变java堆:和程序开发密切相关应用系统对象都保存...原创 2018-07-11 11:09:32 · 126 阅读 · 0 评论 -
类加载器
java代码在编译后会变成java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终要转化为汇编指令在CPU上执行类装载器ClassLoader类加载概念:通过一个类的全限定名来获取描述此类的二进制字节流,每一个类加载器都有一个独立的类名称空间,比较2个类是否相等,只有在这2个类是由同一个类加载器加载的前提下才有意义。ClassLoader是一个抽象类ClassLoade...原创 2018-08-01 14:29:13 · 128 阅读 · 0 评论 -
class文件结构
class文件的定义class文件是一组以8位字节为基础的二级制流。各个数据项严格按照顺序紧凑的排列在class文件中,中间没有添加任何分隔符,整个class文件中存储的内容几乎全部都是程序运行的必要的数据,没有空隙存在当遇到8位以上的空间的数据项时,则会按照高位在前方的方式分割成若干个8位字节进行存储class文件有2种数据类型,分别是无符号数和表无符号数属于基本数据类型,以u1...原创 2018-07-25 20:40:12 · 164 阅读 · 0 评论 -
虚拟机监控工具
JDK的bin目录下提供了一些用于监视虚拟机和故障处理的工具,在cmd下输入相关命令就能打印出,虚拟机参数虚拟机进程状态工具jpsjps java process stasus类似于任务管理器,专门查看java任务的,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类,(main函数所在的类)名称。以及这些进程的本地虚拟机唯一ID lvmid举例子jsp -l : 输出主类的全名,...原创 2018-07-25 15:10:07 · 858 阅读 · 0 评论 -
逃逸分析与栈上分配
内存管理主要分为两部分:内存分配、垃圾回收逃逸对象:对象的作用于仅在当前方法中有效,称为没有发生逃逸,反之就认为是逃逸对象发生逃逸情景举例:1.方法返回对象public static StringBuffer craeteStringBuffer(String s1, String s2) { StringBuffer sb = new StringBuffer(...原创 2018-07-19 20:47:37 · 632 阅读 · 0 评论 -
JVM对象的创建、结构、访问定位
1.对象的创建初始化对象默认值问题:臭象数据类型比如Date,String默认值是null;基本数据类型默认值是0;布尔类型默认false;2.对象的结构:对象的结构包括Header(对象头),instanceDate,padding对象头包括:自身运行时数据(哈希值,GC分代年龄,锁状态标志,线程持有的锁,偏向线程ID,偏向时间戳)类型指针:对象指向类的元...原创 2018-07-19 15:37:44 · 213 阅读 · 0 评论 -
虚拟机五大内存区域
java的运行时数据区分为:线程独占区、线程共享区线程独占区包括:程序技术器、虚拟机栈(我们常说的那个栈)、本地方法栈; 虚拟机栈是为执行java方法服务的;本地方法栈是为了虚拟机执行native方法服务线程共享区包括:java堆、方法区1.程序技术器程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行...原创 2018-07-19 13:14:07 · 1127 阅读 · 0 评论 -
内存分配策略
内存分配主要遵循以下策略:优先分配到eden区域大对象直接分配到老年代长期存活的对象分配到老年代空间分配担保动态对象年龄判断*****************************************************************************************************************************...原创 2018-07-23 15:04:21 · 299 阅读 · 0 评论 -
java内存分配原理
栈、堆、常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,详细讲解Java内存分配方面的知识。Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:◆寄存器:我们在程序中...原创 2018-07-11 11:09:24 · 160 阅读 · 0 评论 -
JAVA的内存管理与内存泄漏
Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历与各位网友分享解决这些问题的办法。作为Internet最流行的编程语言之一,Java现正非常流行。我们的网络应用程序就主要采用Java语言开发,大体上分为客户端、服务器和数据库三个层次。在进入测试过程...原创 2018-07-11 11:10:00 · 181 阅读 · 0 评论 -
类加载顺序
类的加载链接初始化都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为java应用程序提供高度的灵活性。1.加载:装载类的第一个阶段取得类的二进制流,从哪里获取是非常广泛的,可以从压缩包,网络读取,也可以运行时计算生成如动态代理技术,由其他文件生成,如由JSP文件生成对应的class类转为方法区数据结构在Java堆中生成对应的java.lang.Cl...原创 2018-07-11 11:10:05 · 168 阅读 · 0 评论 -
GC垃圾回收
GC回收有2种算法:一种是引用计数器法,另一种是可达性分析算法java中 GC的对象是堆空间和永久区1.引用计数器法老牌垃圾回收算法:通过引用计数来回收垃圾,只要有一个人使用就再这个对象上加1,有人释放了这个对象就减1,如果引用计数为0,则对象A就会被回收引用计数问题:(没有被java采用)引用和去引用都伴随着加法和减法,影响性能很难处理循环引用,即A引用B,B引用C,C引...原创 2018-07-11 11:10:11 · 686 阅读 · 0 评论 -
执行引擎
执行引擎是跟操作系统相关的,.class都是JVM指令,JVM就是让执行引擎干活的命令。执行引擎在执行java代码的时候都会有解释执行和编译执行两种选择。解释执行:对源语言写成的源语句进行一句一句的翻译,翻译一句就提交给计算机执行一句,并不会形成目标程序。它的优点是翻译本身并不费事。它的缺点是运行速度慢,比如当程序中存在循环条件时,循环体内的语句就会被多次的翻译,从而影响运行速度...原创 2018-08-03 14:09:13 · 2199 阅读 · 0 评论