Jvm

JVM——跨平台原理

Java语言具有跨平台的特性。这里的平台是指计算机操作系统,如windows、linux等,这里的跨平台是指java程序只需要编译一次,就可以在不同的操作系统上运行,这就是所谓的一次编译,到处运行。 Java语言跨平台的核心是因为JVM的存在。 JVM是Java虚拟机的缩写。这是一种抽象的计算机,是 ......
原理 JVM

JVM性能调优常见工具

# JVM性能调优常见工具 jps用来查看进程 jstack用来查看进程内的栈,或者dump jhat查看dump的信息 jstat查看各代的GC信息等 以上都被visualVM所整合了,可以用可视化工具visualVM来分析 ## jps jps主要用来输出JVM中运行的进程状态信息。语法格式如下 ......
性能 常见 工具 JVM

JVM

### 一、JVM常用参数 ```shell java -Xms2048M -Xmx2048M -Xmn1024M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -jar XXX.jar ``` |含义|参数|备注| | | | ......
JVM

JVM—垃圾回收(三)

[toc] # 一、简单了解几个概念 ## 1、什么是垃圾与垃圾回收? (1)什么是垃圾(Garbage)? 这里的垃圾 指的是 在程序运行过程中没有任何指针指向的对象,即`不再被使用的对象`。 如果不及时清理这些对象(垃圾),这些对象将会占用程序内存,无法被其他对象使用,严重时可能导致内存溢出。 ......
垃圾 JVM

JVM 例子,理解

一个线程一个栈,栈为线程私有。图中只有一个 main 线程。某方法返回时,它对应的栈帧也会释放掉。 方法区进行类加载,类的字节码中有代码 code 所有对象都在堆进行分配 main 线程的时间片(内核分配的)用完了, 上下文切换,cpu 执行 t1 ,要把 main 线程的栈帧都保存下来 ......
例子 JVM

JVM垃圾收集算法

JVM垃圾收集算法当前商业虚拟机的垃圾收集器,大多数都遵循了 “分代收集”(Generational Collection)的理论进行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,分代收集理论建立在两个分代假说之上:弱分代假说(Weak Generational Hypot ......
算法 垃圾 JVM

JVM垃圾回收器

JVM有四种垃圾回收器: (1)串行垃圾回收器:采用单线程进行垃圾回收,占用内存比较小,适合个人电脑使用。 serial垃圾回收器:用于新生代垃圾回收,采用标记复制算法。 serial Old垃圾回收器:用于老年代垃圾回收,采用标记整理算法。 缺点:垃圾回收时只有一个线程在工作,其它java应用的线 ......
垃圾 JVM

JVM垃圾回收机制

判断一个对象是否存活的方法: (1)引用计数法:给每个对象设置一个引用计数器,对象被引用时就+1,引用失效时就-1,当对象的引用为0时,该对象就被视为垃圾对象,等待垃圾回收。但是该方法不能解决循环引用问题。例如:A引用B,B应用A。现在的虚拟机一般不用这种方法。 (2)可达性分析法:沿着GC Roo ......
机制 垃圾 JVM

jvm-多线程通信

http://ifeve.com/thread-signaling/ 多线程的5种运行状态 以一个例子来串烧下知识点:上学的时候我们经常会去图书馆借书,这个我印象比较深刻(本来想举买火车票的例子)。图书馆里,有一本书叫《JAVA并发编程实战》,小A早上的时候把这本书借走了,小B中午的时候去图书馆找这 ......
线程 jvm

JVM常量池

常量池:可以看作是一张表,虚拟机指令根据常量表找到要执行的类名、方法名、参数类型、字面量等信息。 查看字节码结构的指令:javap -v xxx.class。 运行时常量池:当类被加载,会把该类的常量池信息放入运行时常量池中,并把里面的符号地址变为真实地址。 ......
常量 JVM

JVM系统参数

JVM(Java虚拟机)是Java程序的运行环境,它可以通过一些系统参数进行配置和优化。以下是一些常用的JVM系统参数: 1. -Xmx: 用于设置JVM堆的最大内存大小。例如,-Xmx1g表示将堆的最大大小设置为1GB。 2. -Xms: 用于设置JVM堆的初始内存大小。例如,-Xms512m表示 ......
参数 系统 JVM

JVM内存结构

JVM内存结构由五部分组成: 堆:java堆是所有线程共享的一块内存,几乎所有的对象实例和数组都要在堆中分配内存,因此该区域也经常发生垃圾回收操作。 方法区:存放已被加载的类信息。比如:常量、静态变量等。 虚拟机栈:线程私有的,每个方法执行时都会创建一个栈帧,用来存储局部变量、操作数、动态链接以及方 ......
内存 结构 JVM

学习笔记-JVM

# JVM的位置 JVM是运行在操作系统上的虚拟机,存在于JRE当中 # JVM的类型 * HotSpot * Sun公司 * 用的基本都是这个 * JRockit * BEA * J9VM * IBM # JVM的体系结构 ![JVM8.png](https://img1.imgtp.com/20 ......
笔记 JVM

JDK中自带的用于分析JVM内存状况的工具Jmap

查看java项目中所有占用内存的情况,从大到小依次排序,7529为java项目的进程号,可以使用jps命令获取 jmap -histo 7529 以二进制格式导出,file为自定义的文件名 7529为java项目进程号 jmap -dump:format=b,file=jvm.txt 7529 jm ......
状况 内存 工具 Jmap JDK

JVM中GC Roots及引用类型概述

JVM中可以用作GC Roots的对象包括以下几种: 活动线程(Active threads):正在执行的线程被视为GC Roots,因为它们持有当前执行状态的信息。 静态变量(Static variables):被声明为静态的变量属于类,因此它们会一直存在于内存中。 JNI引用(JNI refer ......
类型 Roots JVM

Ergonomics JVM 的一种FullGC的说明

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html 2 Ergonomics Ergonomics is the process by which the Java Virtual Ma ......
Ergonomics FullGC JVM

JVM、JRE和JDK的关系是怎么样的?

JVM Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平 台有自己的虚拟机,因此Java语言可以实现跨平台。 JRE Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核 心类库主要是java.lang ......
JVM JRE JDK

JVM排查

......
JVM

JVM快速入门

内存结构 1.程序计数器 1.1.定义 Program Counter Register 程序计数器(寄存器) 1.2.作用 记住下一条jvm指令的执行地址 1.3.特点 是线程私有的 不会存在内存溢出 2.虚拟机栈 2.1.定义 Java Virtual Machine Stacks(Java虚拟 ......
JVM

JVM面试和学习中需要注意的部分

内存结构 1.方法区用来存储类加载的数据,例如类的名称,方法入口 2.JVM虚拟机栈用于存储线程,包括局部变量和方法参数 3.堆内存用来存储对象 4.方法区的规范实现:永久代和元空间 5.方法区 JVM栈 堆 都会发生内存溢出的问题 程序计数器不会 6.程序计数器用来存储程序运行到哪里 因为线程是不 ......
部分 JVM

JVM 启动参数

JVM 启动参数 通过 jmap 查看 JVM 内存分配 jmap -heap [pid] 一个Java进程最大占用的物理内存为: Max Memory = eden + survivor + old + String Constant Pool + Code cache + compressed ......
参数 JVM

Java - JVM

JVM的位置 JVM的体系结构 JVM的位置 JVM的体系结构 ......
Java JVM

浅聊JVM--基础版

浅聊JVM--基础版 一、来源 jvm共有三种 Sun公司: HotSpot使用最多 BEA:JRockit IBM:J9VM ​ 今天我们主要了解的是Sun公司的HotSpot(关于HotSpot的爱恨情仇这里就不做过多解释了。)我们以前测试jdk是否安装成功,java的环境变量是否配置成功会使用 ......
基础 JVM

JVM系列---【使用jmx_agent监控java程序】

使用jmx_agent监控java程序 ##1.下载jmx_prometheus_javaagent.jar 从https://github.com/prometheus/jmx_exporter/releases下载最新版本的jmx_prometheus_javaagent.jar ##2.创建一 ......
jmx_agent 程序 agent java JVM

【JVM 堆 03】

一、堆的细分内存结构 1、Java 8 及之后堆内存逻辑上分为三部分:新生区+养老区+元空间 Young Generation Space 新生区 Young/New 又被划分为Eden区和Survivor区 Tenure Generation space 养老区 Old/Tenure Meta S ......
JVM

JVM垃圾回收GC

1.如何判断一个对象是否可以回收 引用计数算法: 给对象添加一个引用计数器,当对象增加一个引用时计数器加1,引用失效时计数器减 1。引用计数为0的对象可被回收。 两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正因为循环引用的存在,因此 Java 虚拟机不使用引用计 ......
垃圾 JVM

JVM系列---【使用jconsole开启JVM监控】

#使用jconsole开启JVM监控 ##设置远程监控相关选项 对于远程Java进程的连接,会要麻烦些,首先需要在需监控的远程Java程序启动脚本中加入与JVM远程监控相关的选项: ###1.开启JVM远程监控 -Dcom.sun.management.jmxremote=true ###2.监控的 ......
JVM jconsole

JVM类加载机制

1.类加载的生命周期 类的加载过程包括:加载、验证、准备、解析、初始化 (解析某些情况下可以在初始化阶段后开始; 几个阶段按顺序开始,并非进行或完成,这些阶段通常是互相交叉混合进行。) 类的加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚 ......
机制 JVM

Arthas JVM 调优工具

阿里巴巴开源的一个 JVM 调优工具 —— arthas(阿尔萨斯)。 ## 一、安装 curl -O https://alibaba.github.io/arthas/arthas-boot.jar 如果下载速度太慢,可以用gitee上的源 curl -O https://arthas.gitee ......
工具 Arthas JVM