![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
forrestGTJU
这个作者很懒,什么都没留下…
展开
-
JDK 1.8 JVM内部结构改变_元空间(Metaspace)取代永久代(PermGen)
一、JVM 运行时数据区 根据 JVM 规范,JVM 运行时数据区共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许...转载 2019-06-17 11:33:39 · 603 阅读 · 0 评论 -
Java中Class对象详解
Class类简介 在java世界里,一切皆对象。从某种意义上来说,java有两种对象:实例对象和Class对象。每个类的运行时的类型信息就是用Class对象表示的。它包含了与类有关的信息。其实我们的实例对象就通过Class对象来创建的。Java使用Class对象执行其RTTI(运行时类型识别,Run-Time Type Identification),多态是基于RTTI实现的。 每一...转载 2019-06-17 11:57:54 · 824 阅读 · 0 评论 -
JVM内存区域和内存模型
JVM内存区域和内存模型JVM的构成java内存区域详解对象访问java内存模型主内存,工作内存JVM的构成JVM由三个主要的子系统构成:类加载器子系统运行时数据区(内存)执行引擎Java运行时编译源码(.java)成字节码,由jre运行。jre由java虚拟机(jvm)实现。Jvm分析字节码,后解释并执行。java内存区域详解以下是两张 运行时数据区域(Runtime ...转载 2019-07-10 08:34:03 · 212 阅读 · 0 评论 -
类加载过程和类加载器
这里写自定义目录标题字节码类加载过程类加载器双亲委派模型字节码在聊 Java 类加载机制之前,需要先了解一下 Java 字节码,因为它和类加载机制息息相关。计算机只认识 0 和 1,所以任何语言编写的程序都需要编译成机器码才能被计算机理解,然后执行,Java 也不例外。Java 在诞生的时候喊出了一个非常牛逼的口号:“Write Once, Run Anywhere”,为了达成这个目的,S...原创 2019-07-16 11:57:56 · 151 阅读 · 0 评论 -
Java 自动内存管理机制及性能优化
先看思维导图一、运行时数据区域首先来看看Java虚拟机所管理的内存包括哪些区域1.1 程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。由于 Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。 为了线程切换后能...转载 2019-07-29 10:56:28 · 250 阅读 · 0 评论 -
高性能硬件上的程序部署
高性能硬件上的程序部署15万PV/天 左右的在线文档类型网站 更换硬件系统,心硬件为4个CPU,16GB物理内存,操作系统64位CentOS5.4 Resin作为Web服务器。两种方式:1,选用64位JDK来使用大内存2,使用若干个32位虚拟机建立逻辑集群来利用硬件资源第一种方案给Java虚拟机分配超大堆的前提,是有把握把应用程序的Full GC 频率控制得足够低,至少低到不会影响用户...原创 2019-08-20 15:28:37 · 235 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略
回收堆区 对象已死? (不再被任何途径引用的对象,不需要继续存活,可被回收) 1,引用计数法 (缺点:很难解决对象之间相互循环引用的问题) 2,可达性分析算法 作为GCroot的对象 可以是VMStack(栈帧中本地变量表)中引用的对象,方法区静态属性引用的 对象,方法区常量引用的对象,本地方法栈中JNI...原创 2019-08-16 16:48:18 · 126 阅读 · 0 评论