jvm
2009gis
自己的人生自己负责......
展开
-
JVM基础:内存分配策略与垃圾收集
在编写文章前,有几个问题需要思考一下:内存如何划分? 对象如何分配内存? 哪些内存需要回收? 在哪个节点回收? 如何回收?1. 内存如何划分?当前商业虚拟机采用分代思想管理内存,接下来的部分已 HotSpot 虚拟机的内存分配为分析模型,在 HotSpot 里,Java 堆中可以细分为:新生代和老年代;再细致一点的有 Eden 空间、From Survivor 空间、To Sur...原创 2017-07-10 13:39:34 · 231 阅读 · 0 评论 -
JVM基础:永久代(PernGem)和元空间(Metaspace)
前言在之前的文章中提到过方法区存放的是虚拟机已经加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。同时运行时常量池也是方法区的一部分。但是在不同的JDK版本中对方法区的实现方式存在一定的差异。正题下面通过对 JDK 1.6、JDK 1.7、JDK 1.8 的运行时常量池的对比来看看各自的实现方式。JDK 1.6在 JDK 1.6 及之前的版本中(针对 HotSpot ...原创 2017-10-16 10:25:41 · 1874 阅读 · 0 评论 -
JVM类加载机制
在开发的过程中很少关注类文件的整个装载过程,因为虚拟机替我们做了这些。当需要访问的文件不在内存中,虚拟机就会在对应的目录下把文件加载到内存中进行一些列的处理过程,下面就看看这一系列步骤。1、加载;2、验证;3、准备;4、解析;5、初始化;6、使用;7、卸载;一、加载“加载”是“类加载”过程的第一阶段,在加载阶段虚拟机需要完成以下3件事情:1、原创 2017-09-02 21:21:06 · 177 阅读 · 0 评论 -
JVM对象的创建
前言Java 是一门面向对象的编程语言,在 Java 程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、发序列化)通常仅仅是一个 new 关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通 Java 对象,不包括数组和 Class 对象等)的创建又是怎样一个过程呢?正题虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并...原创 2017-10-18 11:07:24 · 250 阅读 · 0 评论 -
JVM 学习:类加载器
前言在之前的文章中提过,一个对象包括三个部分:对象头、实例数据和对齐填充(非必须)。对象头包括标志位(Mark Word)、类型指针、数组长度(只针对数组类型)。其中的类型指针指向它的类元数据的指针,虚拟机通过这个指针确定这个对象是哪个类的实例。正题在开始文章前,有几个问题需要思考一下:类加载器的作用是什么类加载器的重要接口方法有哪些如何自定义加载器不同加载器加载同一资源文件是否相等JVM 哪些有...原创 2017-10-21 14:55:27 · 346 阅读 · 0 评论 -
JVM基础:Java内存区域认识
在编写文章前,有几个问题需要思考一下:内存分为哪几个区域? 1. 内存分为哪几个区域?Java 虚拟机在执行 Java 程序的过程中会把所管理的内存划分为若干个不同的数据区域,根据《Java 虚拟机规范(Java SE 7版)》规定,Java 虚拟机管理的内存区域包括:方法区、虚拟机栈、本地方法栈、堆、程序计数器。其中方法区和堆是线程共享的,而虚拟机栈、本地方法栈、程序计数器是线程私...原创 2017-06-30 20:51:12 · 470 阅读 · 0 评论 -
JAVA安全模型
作为一种诞生于互联网兴起时代的语言,Java 从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的 Java 程序是安全的,如何对 Java 程序访问本地资源权限进行有限授权,这些安全角度的考虑一开始就影响到 Java 语言的设计与实现。可以说 Java 在这些方面的探索与经验,对后来的一些语言与产品都带来了积极影响。本篇文章中将介绍 Java 中安全模型,以及如何利用安全访问控制机制来...转载 2018-07-22 11:43:54 · 246 阅读 · 0 评论