内存分配以及回收Java虚拟机运行时数据区,分为以下几个模块,包含所有线程共有的数据区和线程单独享有的数据区。程序计数器:字节码行号,通过这个计数器来选取下一条需要执行的指令,线程独有。虚拟机栈:线程私有。方法在执行时会创建一个栈帧,用于存储局部变量表等。局部变量表中存放了编译器可知的基本数据类型、对象引用、returnAddress(指向了一条字节码指令的地址)本地方法栈:与虚拟机栈类似,只不过
分类:
编程语言 时间:
2019-04-28 20:26:53
阅读次数:
171
JVM学习04:类的文件结构 写在前面:本系列分享主要参考资料是 周志明老师的《深入理解Java虚拟机》第二版。 类的文件结构知识要点Xmind梳理 ...
分类:
其他好文 时间:
2019-04-28 20:26:41
阅读次数:
153
javaEE开发已然是一个老生常谈的话题了,但经典之所以会成为经典,就是因为有可重复琢磨之处,每一次的反复推敲都会有不一样的收获。如果你不满足于做一个只会写if…else…的Java程序员,而是希望更进一步,我随便举几个例子吧: 1、了解Java代码的底层运行机制 2、定位性能问题 3、对整个系统进 ...
分类:
编程语言 时间:
2019-04-28 15:50:42
阅读次数:
173
简介 jstack 主要用于生成虚拟机当前时刻的「线程快照」。线程快照是当前 Java 虚拟机每一条线程正在执行的方法堆栈的集合。 生成线程快照的主要目的是用于定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致长时间等待。 基础 线程的几种状态 ,未启动的。不会出现在Dump中。 ...
分类:
编程语言 时间:
2019-04-27 19:28:09
阅读次数:
250
一、byte(8位) short(16位) int(32位) long(64位) float(32位) double(64位) boolean(Java虚拟机决定) true 或者false! 单独4个字节和 Boolean数组1个字节。 char(16位) 0 ~ 65535 integer by ...
分类:
编程语言 时间:
2019-04-27 12:55:28
阅读次数:
156
原文出处: 兰亭风雨 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所存储的数据类型。 程序计数器(Pr ...
分类:
编程语言 时间:
2019-04-25 15:59:25
阅读次数:
129
【JVM虚拟机】(9) JVM是如何处理异常的 上篇博客我们简单说过 ,那么这篇博客就单独讲Code属性表中的exception_table。 在讲之前我们先思考两个问题? 1、为什么捕获异常会较大的性能消耗? 2、为什么finally中的代码会永远执行? 接下来会从JVM虚拟机的角度来解答这两个问 ...
分类:
其他好文 时间:
2019-04-25 00:59:50
阅读次数:
118
造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。 你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置: -Dfile.encoding=UTF8 -Duser.timezone=GMT+08 在一个精简的Linux安装上jre ...
分类:
数据库 时间:
2019-04-23 20:37:26
阅读次数:
2654
Java内存模型(Java Memory Model,JMM),Java虚拟机规范中定义的来屏蔽掉各种硬件和操作系统的内存访问差异, 以实现让Java程序在各种平台下都能达到一致的内存访问结果。 1、主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到 ...
分类:
编程语言 时间:
2019-04-23 17:25:17
阅读次数:
172
方法区:也叫永久区,线程共享,用于存储类结构信息的地方,包括常量池、静态变量、构造函数等类型信息,类型信息是由类加载器在类加载时从类文件中提取出来的,永久区同样存在垃圾回收机制,用为用户通过加载器加载的一些类同样会成为垃圾,JVM会回收一个未被类引用所占的空间,以使方法区空间达到最小堆:是存储Java对象的地方,是GC的主要区域,同样是线程共享的主要区域Java虚拟机栈:存储基本数据类型,局部变量
分类:
其他好文 时间:
2019-04-23 14:19:38
阅读次数:
154