java虚拟机
文章平均质量分 63
无良的奋斗少年
这个作者很懒,什么都没留下…
展开
-
AOT JIT
JIT - Just-In-Time 实时编译,即时编译通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化,根据运行时信息然后随着时间的推移得到尽可能最优的代码,适用于开发调试。AOT - Ahead-Of-Time 预先编译,静态编译AOT与JIT对比有以下优点:在客户端我们不需要导...转载 2018-08-28 20:26:03 · 281 阅读 · 0 评论 -
Java内存区域与内存溢出异常
Java与C++之间有一堵由内存动态分配和垃圾手机技术所围成的“高墙”。根据java虚拟机规范的规定,Java虚拟机将管理的内存分为以下几部分。运行时数据区域程序计数器:是一块较小的内存空间,可以被看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作就是通过这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转与异常处理等功能都需要依赖这个计数器完...原创 2018-10-17 09:25:19 · 193 阅读 · 0 评论 -
内存分配与回收策略
对象优先在Eden分配 大对象优先进入老年代 大对象:指需要大量连续内存空间的java对象,最典型的大对象是那种很长的字符串以及数组。package com.Studay.GC;public class MinorGC { public static final int _1MB = 1024*1024; /** * VM 参数: -verbose:gc -Xm...原创 2018-10-11 18:42:47 · 146 阅读 · 0 评论 -
MinorGC 与 Full GC 区别
新生代GC(Minor GC):是指在新生代的垃圾收集动作,因为java对象大多都具备朝生夕死的特性,所以Minor GC 非常频繁,一般回收速度也比较快。代码实例:package com.Studay.GC;public class MinorGC { public static final int _1MB = 1024*1024; /** * VM 参数: -...原创 2018-10-11 15:15:34 · 235 阅读 · 0 评论 -
JVM-outOfMemoryError
本文章的主要目的为了对内存区域与内存异常的理解通过代码验证java虚拟机规范中描述的各个运行时区域存储的内容; 希望自己在工作中遇到实际的内存溢出异常时,能根据异常信息判断哪个区域的内存溢出; java堆溢出java堆用于存储对象实例,只要不断创建对象,并且保证GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,当这些对象数量达到最大堆的容量限制后就会产生...原创 2018-10-11 09:20:55 · 142 阅读 · 0 评论 -
JVM虚拟机详解(转载的)
【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/文章来源:http://www.cnblogs.com/smyhvae/p/4810168.html 【正文】声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类。那篇文章和本文...转载 2018-09-20 11:24:31 · 179 阅读 · 0 评论 -
Java类加载机制
一、Java类加载机制1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以...原创 2018-09-20 11:16:38 · 109 阅读 · 0 评论 -
JVM内存模型(转载)
JVM内存模型: 从这张图中很直观的看到,程序计数器,虚拟机栈,native栈是线程私有的,堆是线程共有的,现在详细介绍JVM各个区块。 1. 堆(Heap) 是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,该内存区域存放了对象实例及数组(但不是所有的对象实例都在堆中)。其大小通过-Xms(最小值)和-X...转载 2018-09-14 18:48:15 · 114 阅读 · 0 评论 -
从JVM看java多线程(转载)
最近在学习jvm,发现随着对虚拟机底层的了解,对java的多线程也有了全新的认识,原来一个小小的synchronized关键字里别有洞天。决定把自己关于java多线程的所学整理成一篇文章,从最基础的为什么使用多线程,一直深入讲解到jvm底层的锁实现。多线程的目的为什么要使用多线程?可以简单的分两个方面来说:在多个cpu核心下,多线程的好处是显而易见的,不然多个cpu核心只跑一个线程其他...转载 2018-09-17 17:42:13 · 246 阅读 · 0 评论 -
JVM (转载的)
1. Java 内存区域与内存溢出异常1.1 运行时数据区域根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。1.1.1 程序计数器内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成如果线程正在执行...转载 2018-09-04 15:31:53 · 85 阅读 · 0 评论 -
HotSpot虚拟机对象探秘
本文章以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中的对象创建、分配、内存布局、访问的全过程1.对象的创建 一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行ini方法等。 ...原创 2018-10-17 14:55:12 · 229 阅读 · 0 评论