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虚拟机
——Java堆测试
代码Test案例是对Java堆,新生代、老年代的理解和认识,对GC回收机制的应用1.直接运行只展示Java堆内存的使用情况。2.在运行之前,eclipse或Idea配置JVM运行参数(见代码注释中),运行可得详细信息。知识点都在注释里packagedemo;publicclassTestJvm{publicstaticvoidmain(String[]args){longmaxMemory=Run
山月风成
·
2018-07-02 23:45
再有人问你Java内存模型是什么,就把这篇文章发给他。
网上有很多关于Java内存模型的文章,在《
深入理解Java虚拟机
》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有
Hollis在csdn
·
2018-07-02 09:09
Java
架构
深入理解Java虚拟机
学习笔记:第二章,HotSpot虚拟机对象探秘
第二章Java内存区域与内存溢出异常HotSpot虚拟机对象探秘一、对象的创建1.虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那就执行相应的加载过程。2.对象所需的大小是在类加载完成之后就可以确认的。3.如果Java堆中的内存是规整的,分配内存就是把指针从空闲空间那边挪动一段与对象大
追逐太阳-追求梦想
·
2018-07-02 08:59
书籍:深入理解Java虚拟机
《
深入理解Java虚拟机
》第二章:Java内存区域与内存溢出异常
Java内存划分方法区堆栈虚拟机栈本地方法栈(C语言:native方法)程序计数器1程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。每个线程都有一个独立的程序计数器,各个线程相互不影响,独立存储,这类内存区域叫做“线程私有”的内存。如果线程正在执行的是一个Java方法,计数器记录的是正在执行的虚拟机字节码指令的地址。如果执行的是一个naive方法,计数器的值为空。此内
零先生丶
·
2018-06-30 16:33
深入理解Java虚拟机
(五)
内存分配和回收策略1.对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,虚拟机将发起一次MinorGC。2.大对象直接进入老年代3.长期存活的对象将进入老年代4.动态对象年龄判断5.空间分配担保
atongmu2017
·
2018-06-28 17:31
虚拟机
JAVA垃圾回收过程(1)
《
深入理解JAVA虚拟机
》中说:JAVA和C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。
De-Bug
·
2018-06-28 09:57
java
深入理解Java虚拟机
(三)
1.垃圾收集器Serial收集器,单线程收集器。优点是简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。Serial收集器对于运行在Client模式下的虚拟机来说是一个很好的选择。虚拟机Client模式和Server模式ParNew收集器,是Serial的多线程版本,是许多运行在Server
atongmu2017
·
2018-06-27 15:37
虚拟机
《
深入理解java虚拟机
(第2版)》笔记(4/完结)
声明:本文是对《
深入理解java虚拟机
(第2版)》的片段摘录,版权属于原作者。本文仅供学习交流使用,严禁用于商业用途。
DjangoHunter
·
2018-06-23 22:41
读书笔记
《
深入理解java虚拟机
(第2版)》笔记(3)
声明:本文是对《
深入理解java虚拟机
(第2版)》的片段摘录,版权属于原作者。本文仅供学习交流使用,严禁用于商业用途。
DjangoHunter
·
2018-06-23 22:26
读书笔记
《
深入理解java虚拟机
(第2版)》笔记(2)
声明:本文是对《
深入理解java虚拟机
(第2版)》的片段摘录,版权属于原作者。本文仅供学习交流使用,严禁用于商业用途。
DjangoHunter
·
2018-06-23 22:01
读书笔记
《
深入理解java虚拟机
(第2版)》笔记(1)
声明:本文是对《
深入理解java虚拟机
(第2版)》的片段摘录,版权属于原作者。本文仅供学习交流使用,严禁用于商业用途。
DjangoHunter
·
2018-06-23 22:25
读书笔记
手动编译jdk
相信很多人都看过《
深入理解Java虚拟机
》这本书(周志明著),很多人也都想参照着书中所述“自己编译jdk”的步骤来体验一下过程,但是实际操作过程中可能会遇到这样或者那样的问题,造成最终放弃掉。
lm_y
·
2018-06-22 08:22
java
Java
深入理解Java运行时数据区
在
深入理解Java虚拟机
到底是什么这篇博客中,我们有提到
静思践行
·
2018-06-22 06:58
JVM
深入理解java虚拟机
(三)---类加载机制
这部分内容都是参考《
深入理解java虚拟机
—jvm高级特性与最佳实战》-周志明这本书基本都是讲的底层实现的理论,国内很少有这方面的著作想骂人了,前边花了大量功夫写的文章,保存的时候卡了一下,等出来再登录发现之前写的都没存下来
跟着太阳奔跑
·
2018-06-14 11:41
jvm
类加载机制
深入理解java虚拟机
深入理解java虚拟机
(二)---GC标记清除算法与垃圾回收器总结
接上一篇的java内存模型,这一篇记录一下GC垃圾回收的算法,说道垃圾回收,首先说说什么情况下会被回收。一垃圾回收算法1.可达性分析算法一般认为GC回收采用可达性分析算法::从一个被称为GCRoots的对象开始向下搜索,如果一个对象到GCRoots没有任何引用链相连时,则说明此对象不可用。在java中可以作为GCRoots的对象有以下几种:虚拟机栈中引用的对象、方法区类静态属性引用的对象、方法区常
跟着太阳奔跑
·
2018-06-14 10:03
深入理解java虚拟机
深入理解JVM——Java内存区域与内存溢出异常
本文为《
深入理解Java虚拟机
》第二章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。
在咖啡里溺水的鱼
·
2018-06-13 22:44
Java
深入理解Java虚拟机
(5)—— JVM类加载器
类加载器的作用通过一个类的全限定名来获取此类的二进制字节流,将一个类加载到虚拟机内存中。类加载器类型1.启动类加载器(BootstrapClassLoader):该类加载器负责将存放在\lib目录中的,或者被-Xbootclasspath参数所指定的路径中,并且是虚拟机识别的(名字不符合不会被加载)的类库加载到虚拟机内存中。启动类加载器无法被Java程序直接引用。2.扩展类加载器(Extensio
阿早
·
2018-06-12 14:46
java
深入理解java虚拟机
(自学篇)
一、JVM内存区域和内存溢出JVM的运行时数据区包括方法区、堆、虚拟机栈、本地方法栈、程序计数器,其中堆和方法区的数据是被所有线程共享的,虚拟机栈、本地方法栈、程序计数器中的数据是线程私有的。程序计数器:程序计数器一个较小的内存空间,它可以看做是当前线程所执行字节码的行号指示器。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何的一个时刻,一个处理器都只会执行一个线
qq_26359439
·
2018-06-11 22:10
JVM
Java学习进阶路线
Java开发框架SpringMVC/Mybatis/Herbernate/maven《Java编程思想》深入了解java基础Java设计模式《Effectivejava》代码设计及效率Java虚拟机《
深入理解
戴着红领巾走世界
·
2018-06-10 21:52
Java编程
深入理解Java虚拟机
之----类文件结构
谈到类文件结构,就要从Java虚拟机说起。一、Java虚拟机是一个与语言无关的平台实现语言无关性的基础是虚拟机和字节码存储格式。Java虚拟机不与任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联。任意一门语言都可以按照Java虚拟机规范把程序代码编译成Class文件,然后在虚拟机上运行。例如:使用Java编译器可以把Java代码编译成存储字节码的Class文件,使用JRuby等
haihui_yang
·
2018-06-10 00:09
深入理解Java
虚拟机
深入理解JVM03--垃圾收集算法(“标记-清除”,“复制”,“标记-整理”,“分代收集”)
本文是基于周志明的《
深入理解Java虚拟机
》垃圾收集算法Java语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。
彬正hom
·
2018-06-07 17:02
读《
深入理解JAVA虚拟机
》-GC篇
GC是一个项目的一个重要的观察指标,什么时候gc,gc什么东西,如何gc都是需要了解的,以便能更好的supportgc异常的问题1.内存的回收算法一种比较易想的算法是引用计数算法,什么时候我们认为对象可以被回收了呢,就是没有被引用的时候,最简单的方式就是加上引用计数,但是当出现相互引用的时候,也就是a引用b,同时b又引用a,那么通过这种算法是不能回收的,事实也证明了,这种情况是可以被回收的,也就是
吉祥如意酥
·
2018-06-07 06:47
深入理解JAVA虚拟机
学习笔记11——JDK可视化工具-VisualVM以及案例分析
VisualVM:多合一故障处理工具,功能比较全面的一个工具,与其它的检测工具相比,对实际性能影响很小,并且还具备安装插件功能。这个工具和前面介绍的JConsole工具有很多类似的功能,但是比JConsole功能更全面,朋友们可以自己到JDK的bin目录下找到jvisualvm.exe进行测试。这里简单介绍两个比较有用的插件。一个是VisualGC,可以堆内存的使用有一个更全面的监控,包括类的编译
徐可心
·
2018-06-05 08:59
深入理解JAVA虚拟机
——JVM的类加载时机
类加载过程中每个步骤的顺序我们已经知道,类加载的过程包括:加载、连接、初始化,连接又分为:验证、准备、解析,所以说类加载一共分为5步:加载、验证、准备、解析、初始化。其中加载、验证、准备、初始化的开始顺序是依次进行的,这些步骤开始之后的过程可能会有重叠。而解析过程会发生在初始化过程中。类加载过程中“初始化”开始的时机JVM规范中只定义了类加载过程中初始化过程开始的时机,加载、连接过程都应该在初始化
校长专栏
·
2018-06-04 10:02
JVM
深入理解JAVA虚拟机
——JVM的本地方法栈
对于一个运行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据区。当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。本地方法可以通过本地方法接口来访问虚拟机的运行时数据区,但不止如此,它还可以做任何它想做的事情。本地方法本质上时依赖于实现的,虚拟机实现的设计者们可以自由地决定使用怎样的机制来让Java程序调用本地方法。任何本地方法接口都会使用某种本地方法栈。当
校长专栏
·
2018-06-04 10:10
JVM
死磕JVM:类加载机制
死磕JVM:类加载机制一、前言在java代码编译后会生成class字节码文件,而在class字节码文件中的描述的各种信息最终都会被加载到jvm中来运行和使用,笔者是在通过阅读周志明的《
深入理解Java虚拟机
三分之一程序员
·
2018-06-03 18:01
jvm
深入理解Java虚拟机
——JVM的类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类加载的规则:全盘负责,当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其他Class也将由该类加载器负责载入,除非显示使用另外一个类加载器来载入父类委托,先让父类加载器试图加载该类,只有在父类加载器无法加载该类时才尝试从自己
校长专栏
·
2018-06-01 16:29
JVM
《
深入理解Java虚拟机
》(三)--Java内存模型与线程(2)
1/4对于long和double变量的特殊规则Java内存模型于要求lock、unlock、read....等8个操作都具有原子性,但是对于64位的数据类型(long和double),在模型中定义了一条相对宽松的规定:允许虚拟机将没有被volatile修饰的64位变量划分成两次32位操作来进行,即允许虚拟机可以不保证64位数据类型的load、store、read、write这四个操作的原子性,这就
蓝色_fea0
·
2018-06-01 15:12
深入理解Java虚拟机
——JVM的GC实现详解
新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor空间上,最后清理掉Eden和刚才用过的Survivor空间。HotSpot虚拟机默认Eden和Survivo
校长专栏
·
2018-06-01 15:14
JVM
Java虚拟机
JVM
深入理解Java虚拟机
系列——JVM的GC理论详解
GC的概念GC:GarbageCollection垃圾收集。这里所谓的垃圾指的是在系统运行过程当中所产生的一些无用的对象,这些对象占据着一定的内存空间,如果长期不被释放,可能导致OOM(堆溢出)。内存区域中的程序计数器、虚拟机栈、本地方法栈这3个区域随着线程而生,线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作,每个栈帧中分配多少内存基本是在类结构确定下来时就已知的。在这
校长专栏
·
2018-06-01 15:51
JVM
深入理解Java虚拟机
系列——JVM的栈内存
每当启动一个新线程时,Java虚拟机都会为它分配一个Java栈。Java栈以帧为单位保存线程的运行状态。虚拟机只会直接对Java栈执行两种操作:以帧为单位的压栈和出栈。某个线程正在执行的方法被称为该线程的当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。在线程执行一个方法时,它会跟踪当前类和当前常量池。此外,当虚拟机遇到栈内操作指令时,它对当前帧内数
校长专栏
·
2018-06-01 15:15
JVM
深入理解Java虚拟机
系列(1)——什么叫做JVM与JVM规范
引言(1)内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑。不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓狂的内存溢出和泄露的问题。(2)可怕的事情还不只如此,有些使用其它语言开发的程序员,给JAVA程序员扣上了一个“不懂内存”的帽子,这着实有点让人难以接受。毕竟JAVA当中没有malloc和dele
校长专栏
·
2018-06-01 11:01
JVM
JVM GC收集器总结
阅读《
深入理解Java虚拟机
JVM高级特性与最佳实践》的读书笔记Serial收集器单线程收集器,并且会暂停其他所有的工作线程(StopTheWorld)优点:简单而高效,对限定单个CPU的环境非常适合,
j_a_d_e
·
2018-05-31 23:51
jvm
JVM类加载器-自定义实现类加载器
参考《
深入理解java虚拟机
》双亲委派模式从java虚拟机的角度来说,只存在两种不同的类加载器:一种是启动类加载器(BootstrapClassLoader),这个类加载器是由c++语言实现的,是虚拟机自身的一部分
沿途风景21
·
2018-05-28 23:03
SpringBoot学习
Jvm内存模型--《
深入理解Java虚拟机
》读书笔记
Jvm内存模型首先上一张Jvm的内存模型结构图:如上图所示:Jvm内存结构模型图由以下几个部分组成:1、程序计数器2、虚拟机栈3、本地方法栈4、Java堆5、方法区下面一一来认识一下这五个部分。1.1程序计数器1.1.1程序计数器是什么?程序计数器是一块较小的内存空间,可看作是当前线程所执行的字节码的行号指示器1.1.2程序计数器的作用a、字节码解释器通过改变程序计数器来依次读取指令,从而实现代码
当笑已成习掼
·
2018-05-23 23:49
Jvm
Java相关
JVM经典书籍
##JVM系列学习JVM的相关资料《
深入理解Java虚拟机
——JVM高级特性与最佳实践(第2版)》基于最新JDK1.7,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行全面而深入的分析
忧伤的比目鱼
·
2018-05-23 22:47
JVM
深入理解JVM(三)——JVM之判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
本文转载自https://blog.csdn.net/ochangwen/article/details/51406779本文是基于周志明的《
深入理解Java虚拟机
》堆中几乎存放着Java世界中所有的对象实例
小马不奔腾
·
2018-05-23 16:57
JVM
深入理解java虚拟机
-笔记
第6章类文件结构6.1概述6.2无关性基石6.3Class类文件的结构java虚拟机不和包括java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联。Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。Java语言中的各种变量、关键字和运算符号的语义最终都是由多条字节码命令组合而成的。Class文件是一组以字节(8位二进制/8bit)为基础单位的二进制
kennethan
·
2018-05-23 15:37
虚拟机类加载机制
深入理解Java虚拟机
总结
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里而,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依
好好学习Sun
·
2018-05-22 15:59
记录一些书籍
并发编程实战》《七周七并发模型》《多处理器编程的艺术》《Java虚拟机并发编程》《Java并发编程的艺术》《响应式架构》网站:并发编程网IBMDeveloperWorks-Java多线程与并发编程专题虚拟机《
深入理解
Draft灬h
·
2018-05-22 15:45
java基础问题Map声明的时候指定类型与不指定类型
参考
深入理解java虚拟机
。基础知识。。。。。哎
木木_bfe8
·
2018-05-22 11:01
HotSpot虚拟机对象探秘
深入理解Java虚拟机
总结
对象的创建对象创建虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。假设Java堆中内存
好好学习Sun
·
2018-05-18 14:38
栈,堆,方法区
最近在看《
深入理解Java虚拟机
》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构:感觉有必要通过几个实在的例子来加深对这几个区域的了解
qq_23391049
·
2018-05-17 20:28
2018-05-15
《
深入理解Java虚拟机
:JVM高级特性与最佳实践(第二版》读书笔记与常见相关面试题总结1概述执行引擎是java虚拟机最核心的组成部件之一。
玲小喵
·
2018-05-15 16:21
深入理解虚拟机之虚拟机字节码执行引擎
[《
深入理解Java虚拟机
:JVM高级特性与最佳实践(第二版》读书笔记与常见相关面试题总结1概述执行引擎是java虚拟机最核心的组成部件之一。
云栖技术
·
2018-05-15 16:35
javac编译器
深入理解JVM------java内存区域概述
引言最近准备看两本书,一本是《深入理解计算机系统》,另一本是《
深入理解java虚拟机
》,两本都是提升内功的必备经书,思来想去,最终还是决定先看jvm(因为这本书相对薄一些)。
cool_summer_moon
·
2018-05-15 14:19
jvm系列
深入理解Java虚拟机
++JVM高级特性与最佳实践笔记
JDK1.5:引入java.util.concurrent包实现一个粗粒度的并发框架JDK1.7:加入java.util.concurrent.forkjoin包对这个进行扩充程序计数器:(虚拟机概念模型)当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等几区功能都需要依赖这个计数器来完成。如果执
谁知林栖者
·
2018-05-15 11:58
Java
深入理解JAVA虚拟机
(一)
深入理解JAVA虚拟机
(一)本文是学习《
深入理解Java虚拟机
》周志明著所整理的学习笔记,如有错误请斧正转载请注明出处猫挺欠 Java虚拟机在执行Java程序的过程中,会把它管理的内存划分为若干个不同的数据区域
猫挺欠
·
2018-05-10 15:11
Java8 与 Java7 对象分配内存差异 探索
通过学习“
深入理解Java虚拟机
”这本书,在书的92页内存分配这一章节遇见了问题。
阿早
·
2018-05-10 11:03
java
深入理解java虚拟机
(第二版)读书笔记(更新ing)
第二章java内存区域与内存溢出异常2.2运行时数据区域java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。2.2.1程序计数器是一块较小的内存,可以看作是当前线程所执行的字节码的行号指示器。分支,循环,跳转,异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。字节码解释器工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。所以每个线程都需要有一个
ArcheH
·
2018-05-10 09:24
上一页
49
50
51
52
53
54
55
56
下一页
按字母分类:
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
其他