Java
文章平均质量分 56
ghostWARDEN
这个作者很懒,什么都没留下…
展开
-
JVM读书笔记之对象访问
我们现在对JVM内存各个区域有了大致的了解,在日常编码的时候我们最常用的语句之一就是:Object o = new Object( );这个语句被看做是对象的实例化或者对象的访问。在.class文件中类数据被加载到JVM内存中各个区域并初始化之后,上面语句是如何运行的?涉及到JVM的哪些区域?下面会对它做一些讨论。 一. Object o = new Object( ) 我们从原创 2017-10-17 14:18:02 · 188 阅读 · 0 评论 -
JVM读书笔记之类虚拟机类加载机制
上一个博客我们简单的介绍了Java虚拟机(http://blog.csdn.net/ghostwarden/article/details/78249597),这次我们详细说明下类加载机制。一.为什么需要类加载机制 .java文件(不同的JVM语言后缀名不同)经过编译器编译成.class文件之后,如果要在JVM上运行,必须把描述类的数据从.class文件加载到内存,并对数据进行校验原创 2017-10-17 09:25:06 · 200 阅读 · 0 评论 -
JVM读书笔记之JVM简介
Java语言的深入学习必然会涉及到JVM,今日人们对程序的运行效率与容错率要求日益增高,因此面对项目调优,处理程序内存等问题,需要我们不但深入理解Java虚拟机各个部分与原理,还要我们熟练使用JVM性能监控与故障处理工具。本博客对JVM进行一些简单的介绍,详细内容会持续更新,欢迎各位大牛指正,互相交流学习。 我们从几个问题入手,对JVM进行简单的了解,本文介绍的JVM是基于JDK原创 2017-10-16 14:44:05 · 899 阅读 · 0 评论 -
Java操作符
在最底层,Java中的数据时通过使用操作符来操作的。Java是建立在C++基础之上,Java在操作符上做了一些改进与简化。下面我们对操作符进行详解。 一. 操作符定义 操作符作用于操作数,生成一个新值,能够接受一个或多个参数,并产生一个新值。注意:几乎所有的操作符都只能操作基本类型的数据(Java基本类型数据)。例外的操作符是:"=","=="和"!=",这些操作符原创 2017-10-20 11:32:05 · 331 阅读 · 0 评论 -
Java面向对象思想
一. 抽象过程 提到Java语言一定离不开抽象与面向对象的编程思想。什么是抽象?抽象是指对一个过程或物质的某些细节有目的的隐藏,以便把其他方面、细节或者结构表达的更加清楚。比如 所有的编程语言都提供抽象机制,汇编语言是对底层机器的抽象。我们平时使用的“命令式语言”(例如BASIC,C等)是对汇编语言的抽象,这些语言要求在解决问题时要基于计算机的结构,而不是基于所要解决的原创 2017-10-16 16:03:32 · 198 阅读 · 0 评论 -
JVM读书笔记之OutofMemoryError异常
内存泄漏大部分情况下是发生在Java堆中,内存溢出问题解决方法如下: 一般的手段先是通过内存镜像分析工具对dump出来的堆转存进行分析,确认内存中的对象是否必要,确定是出现的内存溢出还是内存泄漏。 1.内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能原创 2017-10-18 11:32:24 · 291 阅读 · 0 评论 -
JVM读书笔记之Java内存模型与线程
这次我们讨论下JVM与JMM(Java内存模型)之间的联系与区别。一. 硬件的效率与一致性 所有的运算任务不能只靠处理器的计算完成,其中还涉及到读取运算数据,内存的交互,存储运算结果等,不能仅靠寄存器来解决,由于计算机系统的存储设备与处理器运算速度之间有几个数量级的差距,所以都会加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)作为内存和处理器之间的缓存(将运算原创 2017-10-18 11:26:26 · 327 阅读 · 0 评论 -
JVM读书笔记之JVM内存管理
一. Java组件的内存使用 Java启动后作为一个进程运行在操作系统中,其组件部分需要分配内存。Java堆 Java堆是 用于存储java对象的内存区域,堆的大小在JVM启动时就一次性向操作系统申请完成,通过-Xmx(最大大小)与-Xms(初始大小)控制大小,一旦分配完成,堆的大小固定,不能在内存不够时向操作系统申请。JVM管理java堆的内存空间,对原创 2017-10-18 11:22:56 · 784 阅读 · 0 评论 -
JVM读书笔记之Java代码编译过程
前面对JVM进行了简单的介绍,接下来我们要深入了解下Java代码编译过程以及.class文件的结构。 一. JVM物理架构 二. Java代码编译与执行过程 Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制原创 2017-10-18 11:14:37 · 246 阅读 · 0 评论 -
JVM读书笔记之性能监控与故障处理工具
一. JVM数据 JVM中的数据包括:运行日志,异常堆栈,GC日志,线程快照(threaddump/javacore文件),堆转储快照(headdump/hprof文件)。二. JDK的命令行工具 JDK bin目录下的有许多命令行工具,比如java.exe与javac.exe。Sun公司也提供了对JVM监控和故障处理的工具。三. 工具详解原创 2017-10-18 11:04:54 · 260 阅读 · 0 评论 -
JVM读书笔记之垃圾收集器
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。这里讨论的收集器基于JDK 1.7 Update 14之后的HotSpot虚拟机 (在这个版本中正式提供了商用的G原创 2017-10-18 10:43:00 · 177 阅读 · 0 评论 -
JVM读书笔记之GC算法
前面我们说了如何判断对象的生存与死亡,JVM判断了对象的生存与死亡之后需要一定的策略区回收死亡对象。本篇博客对四种常用的GC算法的思想进行一些说明。标记——清除算法: 最基础的算法,分为标记和清除两个阶段。首先标记出需要回收的对象(对象的生存笔记的标记方法),完成标记后统一回收所有被标记的对象。主要有两个缺点:1.效率问题,标记和清除效率都不高;2.空间问题,标记原创 2017-10-18 10:13:56 · 247 阅读 · 0 评论 -
JVM读书笔记之对象的生存或死亡
莎士比亚说过:生存还是死亡这是一个问题?我们在进行JVM语言进行编程不需要考虑内存释放问题,因为JVM会帮助我们进行GC(垃圾回收),如此说来,JVM是如何判断对象的生存与死亡,哪些内存需要进行回收。在学习JVM垃圾回收之前,我们必须了解JVM如何判断对象的生存与死亡。 一. 判断方法 Java堆中几乎存放着Java世界中所有对象实例,垃圾收集器在对堆进行回收之前,第一件原创 2017-10-18 09:23:02 · 209 阅读 · 0 评论 -
JVM读书笔记之JVM运行时数据区
前面介绍了JVM如何加载.class文件到JVM内存中,显然不同类型的数据需要不同的部分进行存储于不同部分,因此JVM在执行Java程序的过程中会把它管理的内存区域划分为若干个不同的数据区域,这些区域有各自的用途,以及创建销毁的时间。这次介绍下JVM运行时数据区。如下图所示JVM运行时数据区:原创 2017-10-17 10:57:20 · 253 阅读 · 0 评论