博客专栏  >  运维   >  Java虚拟机

Java虚拟机

Java虚拟机的个人学习心得与体会

关注
3 已关注
23篇博文
  • Java虚拟机--一段Java程序的生命史(二十三)

    一段Java Code,从出生到game over大体分这么几步:编译、类加载、运行、GC;    编译 Java语言的编译期其实是一段"不确定 "的过程,因为可能是一个前端编译器把*.jav...

    2017-07-01 09:22
    378
  • Java虚拟机常用指令(二十二)

    常量入栈指令 该指令的功能是将常数压入操作数栈,根据数据类型和入栈内容的不同,又可以分为const系列,push系列和ldc指令; const:用于特定的常量入栈,入栈的常量隐含在指令本身...

    2017-06-25 15:26
    693
  • Java虚拟机--字节码(二十一)

    目录:字节码与虚拟机的关系,相当于汇编语言与计算机的关系。当Java源码被编译成Class文件后,虚拟机会将Class文件内的方法字节码载入系统并加以执行;     代码如何执行? Ja...

    2017-06-09 23:01
    523
  • Java虚拟机--Class装载系统(二十)

    目录:Class文件被载入虚拟机后,会做哪些额外的处理?类加载的具体步骤是怎么样的? Class文件的装载流程 Class类型以文件形式存在,只有被Java虚拟机装载的Class类型才能...

    2017-06-05 09:24
    473
  • Java虚拟机--ClassLoader(十九)

    目录:ClassLoader工作在Class装载的加载阶段,主要作用是从系统外部获得Class二进制数据流    知识点的梳理: 当系统需要加载一个类时,会先从顶层的启动类加载器开始加载,逐层往...

    2017-05-28 09:24
    466
  • Java虚拟机--ASM(十八)

    ASM体系结构 ASM是Java字节码的操作库,包括Eclipse,Spring,CGLIB都是ASM的使用者; 优势: 性能高; 直接工作于底层,使用更加灵活...

    2017-05-22 16:57
    416
  • Java虚拟机--Class文件结构(十七)

    知识点的梳理: 通过class文件,可以让更多的计算机语言支持Java虚拟机平台。Class文件结构不仅仅是Java虚拟机的执行入口,更是Java生态圈的基础和核心  Class文件 ...

    2017-05-15 09:01
    453
  • Java虚拟机--Java内存模型(十六)

    什么是Java内存模型 并发程序需要保证多线程间数据访问的一致性。如果一个线程中修改了全局变量A,在另外一个线程中读取到的值未必是修改后的新值。 Java内存模型用来将这种看似随机的状态变...

    2017-05-15 08:59
    376
  • Java虚拟机--无锁(十五)

    啥是无锁? 高并发时,"锁"的激烈竞争可能会成为系统瓶颈;无锁使用非阻塞同步的方法,在不使用锁的前提下,确保数据和程序在高并发环境下保持多线程间的一致性。 理解CAS 重申"锁...

    2017-04-24 09:35
    428
  • Java虚拟机--锁在应用层的优化思路(十四)

    减少锁持有时间 问题描述:锁竞争时,单个线程对锁的持有时间与系统性能有着直接的关系。线程持有锁的时间很长,相对的,锁的竞争程度也就越激烈。在程序开发中,应该尽可能减少对某个锁的占有时间,以...

    2017-04-18 15:49
    332
  • Java虚拟机-锁与并发(十三)

    锁的基本概念和实现 理解线程安全 在多线程的环境下,无论多个线程如何访问目标对象,目标对象的状态应始终保持一致。 示例:在多线程环境下使用ArrayList public ...

    2017-04-18 15:48
    392
  • Java虚拟机--String在虚拟机中的实现(十二)

    知识点的梳理: 虚拟机中,常量池专门用于存放字符串常量。在JDK1.6之前,它在永久区。JDK1.7之后,它转移到了堆中;    String对象的特点 String的特点: 不变性;...

    2017-04-10 17:11
    360
  • Java虚拟机--分析Java堆(十一)

    找到内存溢出的原因 堆溢出 异常说明:因为大量对象都直接分配在堆上,绝大部分的内存溢出都属于这种情况; 原因分析:因为大量对象占据了堆空间,而这些对象都持有强引用,导致无法回收,当大于Xm...

    2017-04-10 17:11
    343
  • Java虚拟机--常用的GC参数(十)

    串行回收器相关的参数: -XX:+UseSerialGC:在新生代和老年代使用串行收集器; -XX:SurvivorRatio:设置eden区大小和survivior区大小的比例; -XX...

    2017-04-10 17:09
    337
  • Java虚拟机--对象分配和回收的细节问题(九)

    禁用System.gc() System.gc()会直接触发Full GC,同时对老年代和新生代进行回收; 一般情况下垃圾回收应是自动进行的,无需手工触发;过于频繁地触发垃圾回...

    2017-04-10 17:08
    284
  • Java虚拟机--垃圾回收器(八)

    串行回收器 简介:是指使用单线程进行垃圾回收的回收器; 能力:每次回收时,串行回收器只有一个工作线程; 能力特点: 对于并行能力较弱的计算机来说,串行回收器的专注性和独占性往往有更好的性能表现...

    2017-03-27 23:11
    309
  • Java虚拟机--判断可触及性(七)

    知识点的梳理: 可触及性包含3种状态:对象只有在不可触及状态时才会被回收!; 可触及的:从根节点开始,可以到达这个对象; 可复活的:对象的所有引用都被释放,但是对象有可能在finalize()函数...

    2017-03-27 23:10
    297
  • Java虚拟机--垃圾回收算法(六)

    知识点的梳理: 名词解释: 可达对象:指通过根对象进行引用搜索,最终可以达到的对象; 不可达对象:通过根对象进行引用搜索,最终没有被引用到的对象; 新生代:存放年轻对象的堆空间。年轻对象指刚刚创建...

    2017-03-27 23:07
    415
  • Java虚拟机--非堆内存的参数配置(五)

    方法区配置 JDK1.6 , JDK1.7配置永久区大小: -XX:PermSize:初始的永久区大小; -XX:MaxPermSize:最大永久区; JDK1.8使用元数据区替代永久区: 默...

    2017-03-27 23:06
    309
  • Java虚拟机--堆的配置参数(四)

    最大堆和初始堆的设置 说明: Java进程启动时,虚拟机就会分配一块初始堆空间,可以使用参数-Xms指定这块空间的大小;如果初始堆空间耗尽,虚拟机会对堆空间继续扩展,其扩展上限为最大堆空间,最大堆...

    2017-03-27 15:28
    607
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部