非堆内存相关配置-XX:PermSize永久区初始大小-XX:MaxPermSize永久区最大大小 在JDK1.8中使用-XX:MxMetaspaceSize配置永久区最大大小-Xss线程栈大小-XX:MaxDirectMemorySize直接内存大小,默认为最大堆空间,即-Xmx。当直接内存使用量... ...
分类:
编程语言 时间:
2018-08-16 14:56:53
阅读次数:
188
1. JVM的基本结构 1.1. 类加载子系统 类加载子系统负责从文件或者网络中加载Class信息,加载的类信息存放于方法区的内存空间。方法区中可能还会存放运行时常量信息,包括字符串与数字常量。(这部分常量信息是Class文件中常量池部分的内存映射)。 1.2. JAVA堆 JAVA的堆在JVM启动 ...
分类:
编程语言 时间:
2018-08-16 14:03:44
阅读次数:
151
Java编程实战宝典PDF 目录 第1篇 Java基础知识入门第1章 Java的开发运行环境( 教学视频:57分钟)1.1 Java运行原理与Java虚拟机1.1.1 Java运行原理简述1.1.2 Java虚拟机1.2 Java的开发环境1.2.1 JDK的安装1.2.2 如何设置系统环境变量1. ...
分类:
编程语言 时间:
2018-08-15 17:46:10
阅读次数:
180
主要内容如下: JVM启动流程 JVM基本结构 内存模型 编译和解释运行的概念 一、JVM启动流程: JVM启动时,是由java命令/javaw命令来启动的。 二、JVM基本结构: JVM基本结构图: 《深入理解Java虚拟机(第二版)》中的描述是下面这个样子的: Java中的内存分配: Java程 ...
分类:
编程语言 时间:
2018-08-14 21:56:36
阅读次数:
132
1.java内存模型 1.JVM内存模型 JVM内存模型如上图,需要声明一点,这是《Java虚拟机规范(Java SE 7版)》规定的内容,实际区域由各JVM自己实现,所以可能略有不同。以下对各区域进行简短说明。 1.1程序计数器 程序计数器是众多编程语言都共有的一部分,作用是标示下一条需要执行的指 ...
分类:
编程语言 时间:
2018-08-14 18:48:49
阅读次数:
210
前言:class文件结构、类加载机制、类加载器、运行时数据区这四个java技术体系中非常重要的知识,学习完了这些以后,我们知道一个类是通过类加载器加载到虚拟机,存储到运行时数据区,而且我们也知道了我们方法体内的代码被编译成字节码保存在方法表中的code属性中,那么虚拟机又是怎么执行这些代码的,得出方法输出结果的呢?这一节我们就要来学习,关于虚拟机字节码执行引擎的相关知识。通过这章节的学习,我们要掌
分类:
编程语言 时间:
2018-08-14 15:40:22
阅读次数:
189
引自《深入理解Java虚拟机》 关键词:优先级,大对象,老不死对象 三个策略: 对象优先在Eden区分配 大对象直接进入老年代(大对象举例:很长的String,很长的数组) 长期存活的对象进入老年代 长期存活:从Eden出生,每经历一次Minor GC 年龄加1(出生时为0,年龄为1时已经在Surv ...
分类:
其他好文 时间:
2018-08-13 20:58:14
阅读次数:
135
阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多的技术含量。 每一种收集器的日志形式都是由它们自身的实所决定的,每个收集器的日志格式都可以不一样。 最前面的数字“33.125”和“100.667”代表了GC发生的时间,这个数字的含义是从Java虚拟机启动以来经过 ...
分类:
其他好文 时间:
2018-08-13 12:19:20
阅读次数:
186
前言:虚拟机设计团队把类加载阶段中"通过一个类的权限定名来获取描述此类的二进制字节流"这个动作放到虚拟机外部区实现,让程序自己决定如何去获取所需的类。实现这个动作的代码模块就被称为类加载器。它最初是为了满足JavaApplet的需求而被开发,而现在JavaApplet基本已经宣布死亡,但类加载器却在类层次划分、OSGi、热部署、代码加密等领域大放异彩。它是java技术体系中一块
分类:
编程语言 时间:
2018-08-12 21:45:20
阅读次数:
145
锁粗化 虚拟机遇到一连串连续的对同一锁不断的进行请求和释放的操作,把所有的锁操作整合成对锁的一次请求 锁偏向 轻量级锁 子旋锁 锁消除 ...
分类:
其他好文 时间:
2018-08-12 12:16:04
阅读次数:
126