![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
枫哥和java
这个作者很懒,什么都没留下…
展开
-
JVM运行原理详解
1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构也是很有必要的。 说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示: Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个...转载 2018-05-23 16:50:38 · 315 阅读 · 0 评论 -
Java虚拟机工作原理详解
一、类加载器首先来看一下java程序的执行过程。 从这个框图很容易从大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入[java] view plain copyjavac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其...转载 2018-05-23 16:56:06 · 865 阅读 · 0 评论 -
深入理解Java虚拟机笔记---class类文件魔数,版本,常量池
魔数 每个class文件的头4个字节称为魔数(Magic Number),其值为:0xCAFEBABE,它的唯一作用是用于确定这个文件是否为一个能被虚拟机接受的class文件。使用魔数而不是扩展名来进行识别主要是基于安全的考虑,因为文件的扩展名可以随意地被改动。版本号 紧接着魔的4个字节存储的是class文件的版本号:第5和第6个字节是次版本号(Minor Version),第7和第...转载 2018-10-09 15:26:27 · 267 阅读 · 0 评论 -
关于JVM内存(堆和栈),线程共享和非线程共享。
什么是JVM?所谓JVM就是JAVA虚拟机(Java Virtual Machine)。这也正是Java牛逼的地方所在,众所周知,Java的特点就是“一次编译,到处运行”。这就是JVM做到的,JVM就是一台虚拟的计算机,把具体的机器指令屏蔽起来,用自己独有的一套东西。开发者编写的程序经过编译器生成Java虚拟机上运行的目标代码(字节码),就可以无视平台,带来的弊端也显而易见,Java虚拟机在执...转载 2019-02-12 17:08:26 · 1143 阅读 · 0 评论 -
JVM知识问答集锦
JVM结构与机制JVM类加载公众号推荐:公众号:VOA英语每日一听微信号: voahk01可长按扫码关注,谢谢转载 2018-04-03 09:59:58 · 311 阅读 · 0 评论 -
Java 虚拟机 9:Java 类加载机制
来源:五月的仓颉,www.cnblogs.com/xrq730/p/4844915.html前言我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后才能运行和使用。而虚拟机如何加载这些.class文件?.class文件的信息进入到虚拟机后会发生什么变化?这些都是本文要讲的内容,文章将会讲解加载类加载的每个阶段Java虚拟机需要做什么...转载 2018-03-27 14:56:42 · 212 阅读 · 0 评论 -
自己动手写写:关于jvm的理解(3)
上篇文章讲到了Heap(堆)相关的内容,下面紧接着讲讲Runtime Data Areas(运行数据区)中Java Stacks、PC Register、Native Method Stacks. Java Stacks 每当启动一个新线程时,Java虚拟机都会为它分配一个Java栈。前面我们曾经提到,Java栈出帧为单位保存线程的运行状态。虚拟机只会直接对Java栈执行两种操作:以帧...转载 2018-02-09 13:30:00 · 271 阅读 · 0 评论 -
转载一篇总结的非常好的内存分析文章
原文地址:JVM内存状况查看方法和分析工具作者:董志忠Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看、分析GC及JVM内存的状况。通过这些分析,可以排查程序中内存泄露的问题及调优程序的性能。下面介绍几种常用的免费工具,其中知名的有JProfiler 等。 1. 输出GC日志 输出GC日志转载 2017-11-10 14:49:44 · 372 阅读 · 0 评论 -
Java中JDK,JRE,JVM的区别
JVM(Java Virtual Machine Java虚拟机) JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地转载 2017-11-14 15:23:24 · 214 阅读 · 0 评论 -
Java中JDK和JRE的区别是什么?它们的作用分别是什么?
JDK和JRE是Java开发和运行工具,其中JDK包含了JRE,但是JRE是可以独立安装的~它们在Java开发和运行的时候起到不同的作用~ 关于JDK和JRE,大家一定会记得,在安装JDK的时候需要分为俩个步骤:安装JDK和JRE,大家一般会一起安装,也建议大家分开装,因为这样更能帮助大家弄清它们的区别 JRE是Java Runtime Environment的缩写,是转载 2017-11-14 15:39:41 · 368 阅读 · 0 评论 -
java jvm关闭事件,通知程序做某些事情
应用场景:某个程序发起了N个线程循环不停做某些事情,正常情况下这些线程需要被安全的停止方可保证数据不丢失,如果停电的情况那就没辙,那么有时候需要关闭服务器,那么如何让jvm告诉其内部的程序现在要关闭了呢?答案是使用钩子(hook)某个线程需要向jvm注册钩子,让jvm在停止的时候通知它,做法是:WorkThread extend Thread{ class Shut转载 2017-12-19 09:12:05 · 2539 阅读 · 0 评论 -
JVM虚拟机类加载机制
本文是基于周志明的《深入理解Java虚拟机》 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 从类被加载到虚拟机内存中开始,到卸载出内存为止,类的生命周期包括加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初转载 2018-01-13 10:39:16 · 411 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略
本文是基于周志明的《深入理解Java虚拟机》 堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象)一、判断对象是否存活1、引用计数算法(Reference Counting) 很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每转载 2018-01-13 10:41:57 · 593 阅读 · 0 评论 -
JVM自动内存管理机制
本文是基于周志明的《深入理解Java虚拟机》 对从事C和C++的程序员来说,在内存管理方面,他们既是拥有最高权利的人,也是从事最基础工作的“劳动人民”。 而对于Java程序员来说,JVM自动进行内存管理,程序员不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄露和内存溢出问题。 但是,正因为JVM帮我们管理了内存,一旦出现内存泄露或溢出问题,如果不了...转载 2018-01-13 10:43:39 · 616 阅读 · 0 评论 -
自己动手写写:关于jvm的理解(1)
Java虚拟机是什么 要理解java虚拟机,你首先必须意识到,当你说“Java虚拟机”时,可能指的是如下三个不同的东西:1. 抽象规范2. 一个具体的实现3. 一个运行中的虚拟机实例 Java虚拟机抽象规范仅仅是一个概念,在Tim Lindholm和Frank Yellin编著的《The Java Virtual Machine Specification...转载 2018-02-09 13:27:41 · 264 阅读 · 0 评论 -
自己动手写写:关于jvm的理解(2)
上篇文章描述了Runtime Date Areas(运行时数据区)这一大块中的Method Area(方法区),此篇文章接着上一篇的内容往下讲。 Heap 堆 java程序在运行时创建的所有类实例或数组都放在同一个堆中。而一个Java虚拟机实例只存在一个堆内存空间,因此所有的线程均共享这个堆。又由于一个java程序独占一个Java虚拟机实例,因而每个java程序都有他自己的堆内存----...转载 2018-02-09 13:29:01 · 226 阅读 · 0 评论 -
深入分析Java规范中JVM的内存布局模型
Java是一门结合了编译执行与解释执行的语言。首先,Java编译器把Java源码编译成Java字节码(byte-code),然后,Java字节码在Java虚拟机(JVM)上解释执行。实际上,Java虚拟机在执行Java代码的过程中,会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时机,有些区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立原创 2017-10-21 16:31:54 · 388 阅读 · 1 评论