Java基础知识,JVM
Q蛋黄酱
这个作者很懒,什么都没留下…
展开
-
JVM监控与调优
原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html目录参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何转载 2017-06-18 14:56:32 · 454 阅读 · 0 评论 -
关于Java虚拟机二三事(五)---类文件结构(上)
1.前言 当编写完一段Java代码并保存以后,其实Java代码会保存在以.Java为扩展名作为结尾的文件中,如test.java,而这个文件若想在JVM上执行,则必须先利用javac编译器进行编写,形成所谓的“字节码(ByteCode)文件”,即接下来要分析的重点内容---Class类文件(.class文件)。然后,JVM虚拟机才会执行.class文件。 具体过程如上图所示 ...原创 2018-05-07 17:05:29 · 431 阅读 · 0 评论 -
关于Java虚拟机二三事(八)---JVM机器指令集及其执行引擎
1.前言 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java源码编译成.class文件,class文件便是Java虚拟机能够认识的二进制机器码。Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码?本文将就此问题进行讲解。2.Java虚拟机的运行时数据区 在讲解本节知识之前,先来回顾一下Ja...原创 2018-05-12 17:56:50 · 1412 阅读 · 2 评论 -
关于Java虚拟机二三事(七)---类文件结构(下)
1.前言 class文件存储格式中对方法的描述与对字段的描述几乎采用了完全一致的方式,方法表的结构如同字段表一样,依次包括了访问标注(access_flag)、名称索引(name_index)、描述符索引(descriptor_index)、属性表集合(attributes)几项。2. 概述 方法表集合是指由若干个方法表(method_info)组成的集合,对于在类中定义的若干个,经过...原创 2018-05-09 17:22:56 · 263 阅读 · 0 评论 -
关于Java虚拟机二三事(六)---类文件结构(中)
1.前言 在上节内容中,介绍了class文件中的魔数、主次版本号、常量池、访问标志以及类索引,父类索引和接口索引集合。本节将进一步介绍class文件中剩余部分:字段表集合、方法表集合以及属性表集合。2.字段表集合 字段表(field_info)用于描述接口或者类中声明的变量。字段(field_info)包括类级变量以及实例级变量,但不包括方法内部声明的局部变量。例如Java中描述的一个...原创 2018-05-09 11:24:32 · 245 阅读 · 0 评论 -
关于Java虚拟机二三事(四)---内存分配与回收策略
前言 上篇文章中,已经较为详细地介绍了虚拟机中垃圾收集器体系以及运行原理,本文将继续探讨给对象分配内存的具体策略。 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区,如果启动了本底线程分配缓存(TLAB),则将按线程优先在TLAB上分配。少数情况下,也可能直接分配至老年代中,分配的规则并非固定,其细节取决于当前所使用的哪一种垃圾收集器组合,还原创 2018-01-05 17:01:39 · 353 阅读 · 0 评论 -
关于Java虚拟机二三事(三)---垃圾回收算法及回收器
前言 在介绍了对象的创建、定位以后,具体的使用则需要根据不同的业务逻辑来确定,这部分是比较自由的。但正如前文所说,Java程序员将内存的管理交托给了JVM。因此此章节将进一步介绍Java垃圾收集器及内存分配策略的相关知识。 Java语言出来之前,大家都在拼命的写C或者C++的程序,而此时存在一个很大的矛盾,C++等语言创建对象要不断的去开辟空间,不用的时候有需要不断的去释放控件,既要写构造函数,原创 2017-12-26 10:00:39 · 377 阅读 · 0 评论 -
关于Java虚拟机二三事(二)---对象创建及定位
前言: 在了解了JVM内存的结构之后,我们可以更进一步了解,对象在创建到销毁时,内存分配及回收的具体过程和策略。此处先学习一下Java对象的创建过程。 Java虚拟机执行过程中,对象的生命周期可以大概分成三个阶段:对象的创建、对象的使用、对象的销毁三个阶段,具体可如下图所示。 上图给出的是较为概要的对象生命周期。并针对对象的创建进行了具体的步骤描述: 1、当Java源文原创 2017-12-24 11:36:03 · 559 阅读 · 0 评论 -
关于Java虚拟机二三事(一)---Java技术体系及JVM内存结构
前言作为一个爱好Java的程序猿,自然少不了对JVM的学习和研究,《深入理解Java虚拟机》一书,大概从头到尾完整地看了四五遍,有些地方感觉讲的粒度比较粗,但只是少数,总体而言,这本书讲解的非常棒,不少东西都是看了第二次,甚至第三次之后才有了进一步的理解。走进Java-Java技术体系从广义上讲,Clojure、JRuby、Groovy等运行于Java虚拟机上的语言及其相关程序都属于Java技术体系原创 2017-12-22 17:33:06 · 397 阅读 · 0 评论 -
理解GC日志
一、日志分析 理解GC日志是处理Java虚拟机内存问题的基本技能,下面我们具体来看看。通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略。1、编写java代码public class ReferenceCountingGC { public Object instance = null; private static fin转载 2017-06-30 11:11:39 · 243 阅读 · 0 评论 -
JVM在JDK8取消了永久代(PermGen)代之元空间(Metaspace)的意义
最直接的后果,就是以后再也不会有outofmemoryerror permgen space这个错误了!最根本的好处就是在效率提升的同时增加了安全性。相对于C++来说,Java语言更加安全,jvm具有自动的垃圾回收机制,而C++的程序员需要手动去清除垃圾。JVM这种设计思路确实使java语言的安全性提高了,并且不需要程序员手动去清理垃圾,但是带来了时间上的开销,也就导致了java语言效率低,速...转载 2017-07-30 23:06:17 · 578 阅读 · 0 评论