JVM笔记

  

PC寄存器:每个拥有一个PC寄存器,在线程创建时创建

方法区:

对应Permannet Generation,可通过-XX:PermSize和-XX:MaxPermSize指定最大最小值

方法区全局共享,保存load类的信息(名称、修饰符等)

方法区内存超出会抛出OutofMemory异常

时间: 2024-10-26 21:53:47

JVM笔记的相关文章

JVM笔记——技术点汇总

目录 · 初步认识 · Java里程碑(关键部分) · 理解虚拟机 · Java虚拟机种类 · Java语言规范 · Java虚拟机规范 · 基本结构 · Java堆(Heap) · Java栈(Stacks) · 方法区(Method Area) · 直接内存(Direct Memory) · 本地方法栈(Native Method Stacks) · 常用参数 · 设置参数 · 查看参数 · 跟踪垃圾回收 · 跟踪类加载/卸载 · 设置初始堆和最大堆 · 设置堆分布 · 处理堆溢出 · 配置

jvm笔记2--垃圾收集器与内存分配策略

垃圾收集器与内存分配策略 Java运行时,内存的各个部分中,程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作.每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的.因此这几个区域不需要过多考虑回收的问题,因为线程结束时,内存自然就跟着回收了. Java堆和方法区不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,只有在程序运行期间才知道会创建哪些对象,这部分内存的分配

jvm笔记-02-垃圾收集器与内存分配策略

[TOC] 对象的生存与死亡 如何判定一个对象的生与死 引用计数法 Reference Counting 给对象中添加一个引用计数器,被引用加1,引用失效减1,计数器为0则对象可以被回收. 缺点:很难解决对象之间互相循环引用的问题. 可达性分析法 Reachability Analysis 通过一系列 GC Roots 的对象作为起点,向下搜索,遍历路径称为引用链.当一个对象到 GC Roots 不可达时,证明此对象是不可用的. GC Roots对象包括: 虚拟机栈中引用的对象 方法区中静态常量

JVM笔记2-Java虚拟机内存管理简介

java虚拟机内存管理图如下图所示: 1.线程共享区,是所有的线程所共用的,线程共享区有一下几个组成: 1.方法区:运行时常量池,已经被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据 2.java堆:存储对象实例 2.线程独占区,是每一个线程都有自己独立的虚拟机栈,本地方法栈,程序计数器. 1.虚拟机栈:存储方法运行时所需的数据,成为栈帧. 2.本地方法栈:为JVM所调用到的native即本地方法服务. 3.程序计数器:记录当前线程所执行到的字节码的行号. 原文地址:https

JVM笔记6-垃圾回收概述

JVM进行垃圾回收时要考虑哪的问题如下: 1.如何判定对象为垃圾对象? 1.引用计数法. 2.可达性分析法. 2.如何回收? 1.回收策略. 1.标记-清楚算法 2.复制算法. 3.标记-整理算法 4.分代收集算法 2.垃圾回收器 1.Serial 2.Parnew 3.Cms 4.G1 3.何时回收 原文地址:https://www.cnblogs.com/huangjuncong/p/8453373.html

JVM笔记8-虚拟机性能监控与故障处理工具

1.JDK命令行工具 Java开发人员肯定都知道JDK的bin目录有“java.exe”,"javac.exe"这两个命令行工具,但并非所有程序员都了解过JDK的bin目录之中其他命令行程序的作用.每次JDK更新,bin目录下命令行工具的数量和功能总会不知不觉地增强. 主要包括用于监控虚拟机和故障处理的工具.这些工具被Sun公司作为礼物附赠给JDK的使用者.如下图: 可以看到这些工具的程序体积都异常小巧.基本都稳定在17K左右.这并非JDK开发团队刻意把他们制作得如此精炼,而是这些命令

JVM 笔记:Java内存区域

1.概述 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权为的"皇帝"又是从事最基础工作的"劳动人民"----既拥有每一个对象的"所有权",又担负着每一个对象生命开始到终结的维护责任. 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,由虚拟机管理内存这一切看起来都很美好.不过,也正是因为Java程序员把内存控制的

jvm笔记5--虚拟机类加载机制

前言: 虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,及为虚拟机类加载机制. 在Java语言中,类型的加载,连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性. 如:用户可以通过Java预定义的和自定义类加载器,让一个本地应用程序可以在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分,JSP. 1.类加载时机 类从被加载到虚拟机

JVM笔记3-java内存区域之运行时常量池

1.运行时常量池属于线程共享区中的方法区. 2.运行时常量池用于编译期生成的各种自变量,符号引用,这部分内用将在类加载后接入方法区的运行时常量池中存放. 看如下代码所示,如图: public class Test { public static void main(String[] args) { String s1 = "abc"; String s2 = "abc"; String s3 = new String("abc"); System