E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
《深入理解Java虚拟机》
深入理解Java虚拟机
——程序编译与代码优化
一早期(编译期)优化1概述Java语言的“编译期”是一段“不确定”的操作过程,因为它可能是指一个前端编译器(其实叫“编译器的前端”更准确一些)把*.java文件转变成*.class文件的过程;也可能是指虚拟机的后端运行期编译器(JIT编译器,justintimecompiler)把字节码转变成机器码的过程;还可能是指使用静态提前编译器(AOT编译器,aheadoftimecompiler)直接把*
瑛民星
·
2020-07-06 20:59
书籍笔记
Java
深入理解Java虚拟机
(程序编译与代码优化)
文章首发于微信公众号:BaronTalk,欢迎关注!对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化。本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优化手段。一.早期优化(编译期优化)Java语言的「编译期」其实是一段「不确定」的操作过程。因为它可能是一个前端编译器(如Javac)把*.java文
weixin_30387339
·
2020-07-06 19:56
深入理解Java虚拟机
读书笔记-java编译期和运行期优化
编译期优化解析和填充符号表1.词法、语法分析词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为标记。Token不可再拆分。语法分析是根据Token序列构造抽象语法树的过程,抽象语法树(AbstractSyntaxTree,AST)是一种用来描述程序代码语法结构的树形表示方式,语法树的每一个
啊浪的博客
·
2020-07-06 16:05
Java
类加载和对象的初始化过程
本文主要是探索和分析类的加载过程及对象的实例化过程,主要参考《java编程思想》和《
深入理解java虚拟机
》,文章有错误之处还希望大家批评
入境繁华
·
2020-07-06 13:43
Java
java虚拟机栈(关于java虚拟机内存的那些事)
《
深入理解java虚拟机
》读书扩展作者:淮左白衣写于2018年4月13日16:26:51目录文章目录java虚拟机栈是什么特点栈帧局部变量表什么时候抛出`StackOverflowError`、`OutOfMemoryError
淮左白衣
·
2020-07-06 11:00
深入理解
java
虚拟机
读书笔记
深入理解Java虚拟机
什么是Java虚拟机作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。我们都知道java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释:虚拟机是一种抽
搞IT的王蜀黍
·
2020-07-06 10:17
JVM学习
JVM中的堆
关于JVM堆的详细介绍推荐阅读《
深入理解Java虚拟机
》。我们知道对象存放到JVM堆中,更加具体是存放到堆中新生区的伊甸区。而GC也是集中在堆中,一个JVM中的堆内存的大小可以调节的。
GZ-豆浆油条
·
2020-07-06 10:49
JVM
深入理解Java虚拟机
(七)字节码执行引擎(栈帧、动态连接、方法调用)
执行引擎是Java虚拟机最核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。一、栈帧(StackFrame)栈帧(StackFrame)是虚拟机运行时数据区中的
_superhuihui
·
2020-07-06 09:28
Java虚拟机
读
深入理解Java虚拟机
有感
上大学期间最开始入门C语言,后来跟着学长学习C++,那时候被学长灌输了一些错误的观念,总觉得C++天下无敌,学好C++才是厉害的技术人,他们天天说,Java就是调用一下封装好的库,工作了就是增删改查。后来,机缘巧合下,觉得有必要学习一下Java,当时的考虑就是面向求职学习,最开始是跟着视频学习,跟着视频敲一些代码,因为有C++基础,所以Java这门高度面向对象的语言,学起来也不是那么吃力。之后就学
xiaoW2014
·
2020-07-06 08:38
深入理解java虚拟机
深入理解java虚拟机
大学里非科班生出身,在学习java的路上,有很多前辈一直力荐这本书,不管什么段位都在推荐,让我对这本神奇的书产生了浓厚的兴趣.由于基础薄弱主要挑选了书中的看上去见过的几个理论知识部分
jay_XY
·
2020-07-06 08:53
JVM详解之Java垃圾回收机制详解和调优
JVM详解之Java垃圾回收机制详解和调优转自:http://java.ccidnet.com/art/3539/20060314/476073_1.html缘起在看《
深入理解Java虚拟机
第二版》时,
xiajian2010
·
2020-07-06 08:40
JVM
经验类
java
再有人问你Java内存模型是什么,就把这篇文章发给他。
网上有很多关于Java内存模型的文章,在《
深入理解Java虚拟机
》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。
西安北大青鸟
·
2020-07-06 07:50
JVM学习笔记(一):JVM整体体系结构
话不多说,最近在看
深入理解java虚拟机
这本书,整理一下学习思路,做点笔记,权当纪念看书的美好时光。JVM是什么?
忧犹侑柚
·
2020-07-06 02:47
JVM学习
深入理解Java虚拟机
---学习感悟以及笔记
一、为什么要学习Java虚拟机?这里我们使用举例来说明为什么要学习Java虚拟机,其实这个问题就和为什么要学习数据结构和算法是一个道理,工欲善其事,必先利其器。曾经的我经常害怕处理内存溢出的问题,因为不知道他为什么会出现这个问题,当我在看了这本书以后明白了垃圾回收算法,以及JVM是如何帮助我们处理GC的,这个时候当出现这个问题的时候我就明白需要查找GCRoot,或者查看GC日志,去查找这个问题的根
weixin_30827565
·
2020-07-05 22:22
[转]
深入理解java虚拟机
精华总结(面试)
原文http://www.cnblogs.com/prayers/p/5515245.html一、运行时数据区域31.1程序计数器31.2Java虚拟机栈31.3本地方法栈31.4Java堆31.5方法区31.6运行时常量池4二、hotspot虚拟机对象42.1对象的创建41.检查42.分配内存43.Init42.2对象的内存布局42.3对象的访问定位41.使用句柄访问42.使用直接指针访问5三、
メイ
·
2020-07-05 22:50
Java内存区域之程序计数器--《
深入理解Java虚拟机
》学习笔记及个人理解(一)
Java虚拟机程序计数器在书上的P39页程序计数器干嘛的?有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个。无论是取下一条指令还是分支、循环、跳转、中断、线程恢复,都需要这个程序计数器。程序计数器存在哪?虚拟机区别于硬件,组成原理里学的程序计数器是用CS和IP寄存器来存,来表示指令地址。而Java把程序计数器存在内存里。我好像在操作系统中也听说过程序计数器?是跟操作系统中的程序计数器有
weixin_30335575
·
2020-07-05 20:04
线程安全与锁优化
摘自《
深入理解Java虚拟机
:JVM高级特性与最佳实践》(第二版)并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。
wiljm
·
2020-07-05 18:19
《深入理解
Java
虚拟机》
《
深入理解JAVA虚拟机
》学习笔记(一)JAVA内存划分
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范(JavaSE7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域1、程序计数器线程私有,当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,功能相当于机器的pc取址寄存器2、JAVA虚拟机栈线程私有,虚拟机
郭大侠写leetcode
·
2020-07-05 18:32
JAVA虚拟机
Java虚拟机--Java虚拟机栈
文章引用:1《
深入理解Java虚拟机
》2https://www.cnblogs.com/niejunlei/p/5987611.html3https://blog.csdn.net/ZhongGuoZhiChuang
可乐丶
·
2020-07-05 18:59
JAVA相关技术
深入理解JVM之Java内存区域与内存溢出异常
读了《
深入理解Java虚拟机
-JVM高级特性与最佳实践》的第二章,明白了在虚拟机中内存是如何划分的,哪部分区域、什么样的代码和操作可能导致内存溢出异常。
不贰过先生
·
2020-07-05 17:18
深入理解Java虚拟机
JVM基础知识
根据《
深入理解Java虚拟机
》可知,运行时数据区通常包括这几个部分:程序计数器(ProgramCounterRegister)、Java栈(VMStack)、本地方法栈(NativeMethodStack
禾夕
·
2020-07-05 17:47
学习笔记整理
《
深入理解java虚拟机
》学习笔记之虚拟机即时编译详解
郑重声明:本片博客是学习一书所记录的笔记,内容基本为书中知识.Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器,即时编译器编译性能的好坏、代码优化程度的高
伯努力不努力
·
2020-07-05 16:45
java
java中堆和栈的概念解析
本人看的概念来自于《
深入理解Java虚拟机
》这本书,这本书可谓是讲解JVM原理的一本圣经。首先,jav
易灬小侠
·
2020-07-05 15:06
Java
深入理解Java虚拟机
(类文件结构)
直到后来细读了《
深入理解Java虚拟机
》中虚拟机执行子系统的相关内容,才建立了清晰的认知。如果你也和我一样,不了解类结构和类加载,但是工作中又涉及到字节码相关内容,相信后面两篇文章会对你有
菜鸟飞不动
·
2020-07-05 15:59
产生OutOfMemoryError异常的原因
最近在看周志明的《
深入理解Java虚拟机
》,觉得还是一本不错的书。
无心人偶
·
2020-07-05 12:15
JVM
java
JVM 内存模型笔记
最近在看《
深入理解Java虚拟机
》,准备边看书、边结合一些收集的资料以及自己在工作中的实践写一系列学习和总结的笔记,本篇文章为该系列的第一篇文章。
GeorgeDon
·
2020-07-05 12:21
深入理解Java虚拟机
(三)之详拆运行时数据区的各个结构----本地方法栈
本地方法栈本地方法栈的特点为什么要使用本地方法?本地方法栈的特点我们观察JVM运行时数据域发现java有两个栈,一个本地方法栈,一个Java虚拟机栈。Java虚拟机栈用于管理Java方法的调用,本地方法栈用于管理本地方法(底层用c/c++等非Java语言写的)线程私有允许被实现成固定大小或者可动态扩展内存如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机就会抛出StackOver
是鹿鸣啊
·
2020-07-05 08:13
JVM
JVM自动内存管理机制
本文是基于周志明的《
深入理解Java虚拟机
》对从事C和C++的程序员来说,在内存管理方面,他们既是拥有最高权利的人,也是从事最基础工作的“劳动人民”。
qq_35661171
·
2020-07-05 05:08
JVM
JVM
JVM内存区域解析
JVM内存区域基本结构图:《
深入理解Java虚拟机
(第二版)》中的描述是下面这个样子的:1、程序计数器:程序计数器(ProgramCounterRegister)是当前线程执行的字节码的行号指示器,存放该字节码指令的位置
zml400
·
2020-07-05 05:36
JVM
2.2 堆在整个jvm内存中的运行流程以及jvisualvm工具的使用
一.堆和GC介绍java堆的特点《
深入理解java虚拟机
》是怎么描述java堆的Java堆(JavaHeap)是java虚拟机所管理的内存中最大的一块java堆被所有线程共享的一块内存区域虚拟机启动时创建
盛开的太阳
·
2020-07-05 05:00
【
深入理解Java虚拟机
】方法调用之静态分派与动态分派
静态分派与动态分派方法调用并不等同于方法执行,方法调用的唯一任务就是确定被调用方法的版本(即调用哪个版本),暂时不涉及方法内部的具体运行过程。因为Class文件的编译过程,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行内存中的入库地址(直接引用),这个特点使得java更具有动态扩展能力。1.解析解析就是所有调用方法在Class文中都是常量池里的一个符号引用,在类加载解析
方友运
·
2020-07-05 03:37
java虚拟机
jvm的java虚拟机栈探秘
注:资料来源《
深入理解Java虚拟机
-jvm的高级特性与最佳实践》--周志明著下面重点介绍虚拟机栈VMStack:虚拟机栈描述的Java方法执行的内存模型:每个方法在执行的同
Liu_Kuny
·
2020-07-05 00:14
jvm
Java虚拟机学习资料整理
深入理解java虚拟机
第二版文字版本-带目录.PDF--下载地址链接:https://pan.baidu.com/s/1gNEo1gn4iyl48UkPpmaRyA提取码:emg6
深入理解java虚拟机
第二版极简版
lj淡然一笑
·
2020-07-04 22:44
Java
《
深入理解Java虚拟机
》读书笔记7——线程安全与锁优化
BrianGoetz对线程安全的定义:当多个线程访问一个对象时,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调度方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。1.Java语言中的线程安全按照线程安全的“安全程度”由强至弱来排序,java里面各种操作共享的数据分为以下5类:不可变,绝对线程安全,相对线程安全,线程兼容,
零下九度
·
2020-07-04 21:10
读书笔记
Java虚拟机
深入理解Java虚拟机
笔记---运行时栈帧结构
栈帧(StackFrame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(VirtualMachineStack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外的附加信息。在编译
再见理想1992
·
2020-07-04 21:07
Java基础
JVM 程序计数器
--摘自《
深入理解Java虚拟机
》特点如果线程正在执行的是Java方法,则这个计数器记录的是正在执行的虚拟机字节码指令地址如果正在执行的是Na
猕猴桃0303
·
2020-07-04 21:08
java-虚拟机
理解Java虚拟机(1)之一个.java文件编译成.class文件发生了什么
理解Java虚拟机(1)之一个.java文件编译成.class文件发生了什么最近在看《
深入理解Java虚拟机
》弄明白了很多java的底层知识,决定分几部分总结下,从.java文件编译,到类加载机制,内存分配垃圾回收机制
hucheng91
·
2020-07-04 20:43
JVM类加载机制小结
经常写Java程序的小伙伴应该都听说过类加载机制,在《
深入理解Java虚拟机
》里周老师已经讲的很清楚了,这篇随笔把之前的笔记以及一些总结重新梳理一下。
今天你做题了吗
·
2020-07-04 17:00
从头开始学习JVM(六)—— 垃圾收集器
本系列内容根据自己的学习和理解的基础上,并参考《
深入理解Java虚拟机
》一书介绍的知识所写。如果有写的不对的地方,请各位多多提点。从头开始学习JVM(六)——垃圾收集器垃圾收集器Serial收集
尼尧Nier
·
2020-07-04 17:01
JVM与计算机基础
《
深入理解Java虚拟机
》第一章 走进Java,第二章 Java内存区域与内存溢出异常,第三章 垃圾收集器与内存分配策略
本系列是用来记录《
深入理解Java虚拟机
》这本书的读书笔记。方便自己查看,也方便大家查阅。欲速则不达,欲达则欲速!第一章走进Java一、Java虚拟机发展史这部分一带而过吧,有兴趣的可以阅读原著!
素小暖
·
2020-07-04 16:28
#
深入理解Java虚拟机
深入理解java虚拟机
(五):hotspot垃圾收集算法实现
深入理解java虚拟机
(一):java内存区域(内存结构划分)
深入理解java虚拟机
(二):java内存溢出实战
深入理解java虚拟机
(三):String.intern()-字符串常量池
深入理解java
chaofanwei
·
2020-07-04 06:43
java
虚拟机
深入理解java虚拟机
java
虚拟机
垃圾收集
算法
深入理解java虚拟机
(一):java内存区域(内存结构划分)
深入理解java虚拟机
(一):java内存区域(内存结构划分)
深入理解java虚拟机
(二):java内存溢出实战
深入理解java虚拟机
(三):String.intern()-字符串常量池
深入理解java
chaofanwei
·
2020-07-04 06:43
java
虚拟机
深入理解java虚拟机
深入理解Java虚拟机
之虚拟机栈
目录出现背景内存中的栈和堆Java虚拟机栈是什么?生命周期栈运行原理栈帧的内部结构作用开发过程中,关于虚拟机栈可能的异常?基于以上基础知识,尝试回答以下几个问题出现背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的栈和堆栈是运行时的单位,堆是存储
Juno99
·
2020-07-04 06:30
Java底层原理
jvm
java
编程语言
深入理解Java虚拟机
笔记---底层原理分析与性能优化
深入理解Java虚拟机
笔记---底层原理分析与性能优化文末彩蛋福利#概念虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统,是物理机的软件实现。
JavaWildcat
·
2020-07-04 06:15
java
Redis
并发编程
源码分析
Dubbo
IT
学习
JAVA工程师
分布式事务
面试
多线程
JVM
Mybatis
spring
cloud
单线程
面试题
Spring
IOC
分布式
程序员
框架
spring
boot
数据结构
netty
Mysql
Spring
jvm内存结构和内存模型
JVM内存结构《
深入理解Java虚拟机
(第2版)》中的描述是下面这个样子的:JVM的内存结构大概分为:堆(Heap):线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。
HelloWorld_Joe
·
2020-07-04 05:21
java
深入理解Java虚拟机
读书笔记之垃圾收集器与内存分配策略
可达性分析算法Java虚拟机通过可达性分析算法来判断哪些对象已死可以回收,哪些对象还存活不可回收。可达性分析算法的实现原理:通过一系列的称为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GCRoots没有任何引用链相连接时,那么这个对象就死了,可以被回收。换句话说,当对象到GCRoots不可达时,该对象就可以被垃圾收集器回收。可作为GCRoot
木叶明
·
2020-07-04 05:06
JVM
读《
深入理解Java虚拟机
》有感
dist=jd对于一个学习Java并且不只想会增删改查的程序员来说,《
深入理解Java虚拟机
》就是一本圣书,一本必读的书。为什么我会这样说?
Ace-huang
·
2020-07-04 01:43
杂文
深入理解Java虚拟机
--虚拟机字节码执行引擎
目录运行时栈帧结构局部变量表操作数栈动态连接方法返回地址方法调用解析分派静态分派动态分派单分派与多分派基于栈的解释器执行过程参考书籍:《
深入理解Java虚拟机
——JVM高级特性与最佳实践(第2版)》知识点回顾
pengjunlee
·
2020-07-02 14:13
深入理解Java虚拟机
JVM运行时数据区和垃圾回收机制
最近参考各种资料,尤其是《
深入理解Java虚拟机
JVM高级特性和最佳实践》,大牛之作。把最近学习的Java虚拟机组成和垃圾回收机制总结一下。你不会的都是新知识,学无止境,每天进步一点点。
esc_ai
·
2020-07-02 13:31
J2EE
深入理解Java虚拟机
---jdk1.8废弃永久代的原因
方法区(MethodArea)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”(Non-Heap),目的是与Java堆区分开来。说到方法区,不得不提一下“永久代”这个概念,尤其是在JDK8以前,许多Java程序员都习惯在HotS
loulanyue_
·
2020-07-02 09:06
JVM和GC
上一页
26
27
28
29
30
31
32
33
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他