JVM虚拟机
likaistart
勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏。
展开
-
Class文件中的常量池详解(上)
转载来自:https://blog.csdn.net/wangtaomtk/article/details/52267548NO1.常量池在class文件的什么位置?我的上一篇文章《Java虚拟机原理图解》 1、class文件基本组织结构中已经提到了class的文件结构,在class文件中的魔数、副版本号、主版本之后,紧接着就是常量池的数据区域了,如下图用红线包括的位...转载 2019-06-01 11:14:30 · 171 阅读 · 0 评论 -
写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出
之前看过周志明老师《深入理解Java虚拟机》一书,对JVM内存结构有了一定了解,本篇是我转载的一篇文章用来模拟堆溢出、栈溢出、永久代溢出、直接内存溢出四种场景,让我们在遇到内存溢出时有一个解决思路。原文链接:https://blog.csdn.net/u011983531/article/details/63250882栈溢出(StackOverflowError)堆溢出(OutOfM...转载 2019-03-01 02:04:22 · 379 阅读 · 0 评论 -
一张图看懂JVM之类装载系统
JVM类装载一直是Java程序员无法忽视的一块知识点,这是我微信关注推荐一篇文章,下面这张图好评,包括的知识点比较详细的包括(类加载过程、虚拟机内存结构以及垃圾回收算法等)原文链接:https://mp.weixin.qq.com/s/UU4qltVgRsj0SG7YmER-Qw...转载 2019-02-19 22:27:26 · 147 阅读 · 0 评论 -
Java中GC Roots和四种引用类型
可以作为GC Roots的四种对象说明虚拟机栈(栈帧中的本地变量表)中引用的对象 方法区中类静态属性引用的对象 方法区中常量引用的对象 本地方法栈中JNI引用的对象JDK中四种引用类型以及实现方式说明强引用【类似于Object obj=new Object()】,只要强引用存在垃圾收集器永远不会回收掉被引用的对象 软引用【实现方法SoftReference】,只有在垃圾回收...原创 2019-03-14 23:06:27 · 541 阅读 · 0 评论 -
不一样的视角:从JVM内存模型谈线程安全
原文:https://blog.csdn.net/dd864140130/article/details/58359102作为一个三个多月没有去工作的独立开发者而言,今天去小米面试了一把.怎么说呢,无论你水平如何,请确保在面试之前要做准备,就像其中一位面试官说的一样,我知道你水平不错,但是无论如何也是要准备下的,不然你怎么会连这个方法也忘记了?此刻,我突然觉得我是一个假程序员.为什么这么说...转载 2019-03-19 20:21:41 · 122 阅读 · 0 评论 -
jstat命令查看jvm的GC情况 (以Linux为例)
jstat命令查看jvm的GC情况 (以Linux为例)在周志明老师《深入理解Java虚拟机》第四章有提到,自己也动手敲了下各个命令,对于jstat命令涉及到的输出参数比较多,本文对各个参数意思有比较详细说明感谢原作者分享。本人也对jstat各命令运行一遍,使用操作系统mac 开发工具IDEA 控制台命令直接使用的IDEA的Terminal原文摘自:https://www.cnblog...转载 2019-04-15 00:02:53 · 732 阅读 · 0 评论 -
JVM 虚拟机字节码指令表
原文链接:https://segmentfault.com/a/1190000008722128把JVM虚拟机字节指令表整理了一下,方便搜索,偶尔复习下纯手工整理,可能存在一些问题,如果发现请及时告之我会修正字节码 助记符 指令含义 0x00 nop None 0x01 aconst_null 将null推送至栈顶 0x02 ico...转载 2019-05-02 13:05:28 · 126 阅读 · 0 评论 -
命令查看java的class字节码文件
转自:http://blog.csdn.net/lsbhjshyn/article/details/9329339查看java字节码1 javac –verbose查看运行类是加载了那些jar文件HelloWorld演示:javac –verbose HelloWorld.java可以看到虚拟机编译时做了那些事情……java –verbose H...转载 2019-05-02 22:06:56 · 136 阅读 · 0 评论 -
查看JAVA的class二进制文件的方法
查看JAVA的class二进制文件的方法hexdump -C filename可以查看二进制文件。hexdump属于Linux命令可以参考这篇在Linux环境下安装JDKhttps://blog.csdn.net/qq_35939148/article/details/89786532比如java的Test.javapublic class Test{ public...转载 2019-05-03 12:48:13 · 726 阅读 · 0 评论 -
jdk源码剖析一:OpenJDK-Hotspot源码包目录结构
原文链接:https://www.cnblogs.com/dennyzhangdd/p/6734933.html开启正文之前,先说一下源码剖析这一系列,就以“死磕到底”的精神贯彻始终,JDK--》JRE--》JVM(以openJDK代替)最近想看看JDK8源码,但JDK中JVM(安装在本地C:\Program Files\Java\jdk1.8.0_121\jre\bin\server下j...转载 2019-05-04 14:57:21 · 188 阅读 · 0 评论 -
深入探讨 Java 类加载器
链接:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从...转载 2019-04-29 13:38:27 · 126 阅读 · 0 评论 -
Java安全:SecurityManager与AccessController
在网上看了一篇介绍SecurityManager文章,感觉还不错,推荐给大家!https://juejin.im/post/5b693511e51d45195113866a转载 2019-05-06 12:47:23 · 334 阅读 · 0 评论 -
java 对象存活分析——引用计数法&可达性分析
转载原文来源:https://blog.csdn.net/QuinnNorris/article/details/75040538java虚拟机总共分为五个区域,其中三个是线程私有:程序计数器,虚拟机栈,本地方法栈,两个是线程共享:堆,方法区。线程私有的区域等到线程结束时(栈帧出栈时)会自动被释放,空间比较容易清理。而线程共享的java堆和方法区中的空间较大而且没有线程的回收容易产生很多垃圾信...转载 2019-06-01 10:19:55 · 201 阅读 · 0 评论 -
深入理解Java类加载器(ClassLoader) 详细
原文连接:https://blog.csdn.net/javazejian/article/details/73413292转载 2019-06-01 10:22:49 · 396 阅读 · 0 评论 -
全面理解Java内存模型(JMM)及volatile关键字 详细
原文链接:https://blog.csdn.net/javazejian/article/details/72772461转载 2019-06-01 17:07:53 · 276 阅读 · 0 评论 -
JVM调优之 -Xms -Xmx -Xmn -Xss
原博客地址:http://uule.iteye.com/1、JVM垃圾回收与性能调优总结2、JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代) Tenured(年老代) 永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配...转载 2019-02-19 22:54:18 · 521 阅读 · 0 评论 -
Class文件中的常量池详解(下)
转载来自:https://blog.csdn.net/wangtaomtk/article/details/52267588NO9.类中引用到的field字段在常量池中是怎样描述的?(CONSTANT_Fieldref_info,CONSTANT_Name_Type_info)一般而言,我们在定义类的过程中会定义一些field字段,然后会在这个类的其他地方(如方法中)使用到...转载 2019-06-01 11:14:39 · 225 阅读 · 0 评论 -
Java常量池的大概理解
转载来源:http://www.cnblogs.com/iyangyuan/p/4631696.htmljava常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下。理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈...转载 2019-06-02 09:15:17 · 120 阅读 · 0 评论 -
Java中的栈,堆,方法区和常量池
转载来源:https://blog.csdn.net/fuckluy/article/details/50614983要说Java中的栈,堆,方法区和常量池就要提到HotSpot,HotSpot是Sun JDK 和 Open JDK中所带的虚拟机。(Sun JDK 和 Open JDK除了注释不同,代码实现基本上是一样的)以下说的内容都是围绕HotSpot。Stack(栈)...转载 2019-06-01 17:50:16 · 267 阅读 · 1 评论 -
Java类加载器总结
转载来自:https://blog.csdn.net/gjanyanlig/article/details/68186551.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存...转载 2019-06-01 16:54:58 · 127 阅读 · 0 评论 -
深入理解JVM-虚拟机加载机制-类加载过程
转载来源:https://blog.csdn.net/limm33/article/details/56664298虚拟机把描述类的数据从Class文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 从类被加载到虚拟机内存中开始,到卸载出内存为止,类的生命周期包括加载(Loading)、验证(Verificatio...转载 2019-06-01 11:15:51 · 133 阅读 · 0 评论 -
JVM —— 移除永久代
转载来源:https://blog.csdn.net/wenniuwuren/article/details/51170275最近准备生产环境 JDK 升级到 1.8,本地先升级了下,发现-XX:PermSize 和-XX:MaxPermSize 已经失效,取而代之的是一个新的区域 —— Metaspace(元数据区)。在 JDK 1.7 及以往的 JDK 版本中,Java 类信息、常...转载 2019-06-01 17:13:28 · 404 阅读 · 0 评论 -
全面理解Java内存模型
转载来源:https://blog.csdn.net/suifeng3051/article/details/52611310Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。J...转载 2019-06-02 09:06:57 · 94 阅读 · 0 评论 -
Java的六大存储区域
转载来源:https://blog.csdn.net/qq_28009065/article/details/790878311. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。2. 堆栈(stack)。位于通用RAM中,但...转载 2019-06-01 15:07:09 · 125 阅读 · 0 评论 -
JVM——Java虚拟机架构
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SEU_Calvin/article/details/514045890. 前言Java虚拟机(Java virtualmachine)实现了Java语言最重要的特征:即平台无关性。平台无关性原理:编译后的Java程序(.class文件)由JVM执行。JVM屏蔽了与具体平台相关的信...转载 2019-06-01 11:09:30 · 116 阅读 · 0 评论 -
JVM 方法内联
原文连接: https://blog.csdn.net/ke_weiquan/article/details/519461741. 函数的调用过程。调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。也就是通常说的压栈...转载 2019-06-01 10:13:07 · 103 阅读 · 0 评论 -
ClassLoader的工作原理
原文连接:http://sys53.iteye.com/blog/622626每个运行中的线程都有一个成员contextClassLoader,用来在运行时动态地载入其它类系统默认的contextClassLoader是systemClassLoader,所以一般而言java程序在执行时可以使用JVM自带的类、$JAVA_HOME/jre/lib/ext/中的类和$CLASSPATH/中的...转载 2019-06-01 10:11:43 · 135 阅读 · 0 评论 -
java之jvm学习笔记十(策略和保护域)
欢迎转载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8271415前面一节,我们做了一个简单的实验,来说明什么是策略文件,在文章的最后,也顺带的讲了一下什么是策略,还有策略的作用。为了引出另外一个很重要的概念ProtectionDom...转载 2019-06-01 10:23:15 · 223 阅读 · 0 评论 -
Java并发编程之this逃逸问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhushuai1221/article/details/51221552简介this逃逸是指在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误, 因此应该避免this逃逸的发生.this逃逸经常发生在构造函数中启动线程或注册监听器时, 如...转载 2019-06-01 10:46:06 · 631 阅读 · 0 评论