![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 85
mhHao
Talk less, do more.
展开
-
ASM 简介
前言很早之前就写过面向切面的编程思想,主要学习了AOP的思想(参考:AOP简介)以及使用 AspectJ 实现简单的切面编程(参考:AspectJ之切点语法)。其他常见的AOP编程框架还有 Cglib,Hibernate 和 Spring 等等,而这些目前流行的AOP框架绝大多数底层实现都是直接或间接地通过 ASM 来实现字节码操作。因此,如果你想实现一些简单的切面编程,直接采用上面提及的AOP框架是绝对可以实现的,但是这些框架相对于 ASM 来说重了许多,在你进行代码切入的时候,可能会为你引入许多其转载 2020-10-30 09:59:00 · 2078 阅读 · 0 评论 -
一台java服务器可以跑多少个线程?
一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:IBM Thread and Monitor Dump Analyzer for Java共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。当时就想到一台java服务器到底可以跑多少个线程呢?跟什么转载 2020-06-15 19:14:38 · 1181 阅读 · 0 评论 -
java jvm 参数 -Xms -Xmx -Xmn -Xss 调优
堆大小设置JVM 中最大堆大小有三方面限制: 1.相关操作系统的数据模型(32-bt还是64-bit)限制; 2.系统的可用虚拟内存限制; 3.系统的可用物理内存限制. 在32位系统下,一般限制在1.5G~2G;64为操作系统对内存无特定限制.机器配置:128G内存 32核CPU典型设置:java -Xmx72g -Xms72 -Xmn4g -Xss256m-Xmx72g:设置JVM最大可用内存为72g.-Xms72g:设置JVM促使内存为72g.此值可以设置与-Xmx相同,以避免每次垃圾回转载 2020-06-09 16:34:51 · 1004 阅读 · 0 评论 -
JVM源码分析系列
JVM源码分析系列占小狼32019.01.27 10:35:22字数 363阅读 4,258记得关注一下公众号JVM G1算法系列G1垃圾收集器介绍G1垃圾收集器之RSetG1垃圾收集器之SATBG1垃圾收集器之对象分配过程ZGC系列ZGC,一个超乎想象的垃圾收集器ZGC什么时候进行垃圾回收JVM源码分析系列深入分析Object.finalize方法的实现原理JV...转载 2020-04-02 15:27:45 · 549 阅读 · 0 评论 -
jvm优化必知系列——监控工具
jvm优化必知系列——监控工具这是jvm优化系列第二篇:jvm优化——垃圾回收通过上一篇的jvm垃圾回收知识,我们了解了jvm对内存分配以及垃圾回收是怎么来处理的。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。在常见的线上问题时候,我们多数会遇到以下问题:内存泄露某个进程突然cpu飙升线程死锁响应变慢…等等其他问题。如果遇到了以...转载 2019-08-22 14:02:15 · 74 阅读 · 0 评论 -
JVM系列之实战内存溢出异常
JVM系列之实战内存溢出异常实战内存溢出异常大家好,相信大部分Javaer在code时经常会遇到本地代码运行正常,但在生产环境偶尔会莫名其妙的报一些关于内存的异常,StackOverFlowError,OutOfMemoryError异常是最常见的。今天就基于上篇文章JVM系列之Java内存结构详解讲解的各个内存区域重点实战分析下内存溢出的情况。在此之前,我还是想多余累赘一些其他关于对象的问题...转载 2019-08-22 14:08:21 · 147 阅读 · 0 评论 -
初探调优1:系统压测,瓶颈定位及调优方案
木桶理论应用在系统优化中木桶理论又称短板理论,其核心思想是一只木桶盛水多少,并不取决于最高的木板,而取决于最短的那块木板。 木桶原理应用在系统分析中,即系统的最终性能取决于系统中性能表现最差的组件,为了提升系统整体性能,对系统中表现最差的组件进行优化可以得到最好的效果。 在网站系统中,用户的访问请求到达服务器,然后服务器返回数据并展示给用户,这个过程要经过很多处理,每一个过程的低效都会影...转载 2019-08-22 14:24:34 · 424 阅读 · 0 评论 -
调优系列:如何合理的规划一次jvm性能调优
如何合理的规划一次jvm性能调优这是jvm优化系列第三篇:jvm优化——垃圾回收jvm优化——监控工具JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理解本篇所介绍的内容。你需要已经了解和遵循以下内容:1、已了解jvm 垃圾收集器2、已了解jvm 性能监...转载 2019-08-22 14:28:04 · 135 阅读 · 0 评论 -
字节码增强技术探索
1.字节码1.1 什么是字节码?Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。在Java中一般是用ja...转载 2019-09-11 16:44:09 · 392 阅读 · 0 评论 -
深入理解JVM虚拟机7:JNDI,OSGI,Tomcat类加载器实现
深入理解JVM虚拟机7:JNDI,OSGI,Tomcat类加载器实现转载 2019-09-26 18:41:12 · 102 阅读 · 0 评论 -
为什么要自定义类加载器
类加载机制:http://www.cnblogs.com/xrq730/p/4844915.html类加载器:http://www.cnblogs.com/xrq730/p/4845144.html这两篇文章已经详细讲解了类加载机制和类加载器,还剩最后一个问题没有讲解,就是自定义类加载器。为什么我们要自定义类加载器?因为虽然Java中给用户提供了很多类加载器,但是和实际使用比起来,功能还是匮乏...转载 2019-08-22 13:56:58 · 1200 阅读 · 0 评论 -
虚拟机字节码执行引擎
虚拟机字节码执行引擎所谓的「虚拟机字节码执行引擎」其实就是 JVM 根据 Class 文件中给出的字节码指令,基于栈解释器的一种执行机制。通俗点来说,也就是 JVM 解析字节码指令,输出运行结果的一个过程。接下来我们详细看看这部分内容。方法调用的本质在描述「字节码执行引擎」之前,我们先从汇编层面看看基于栈帧的方法调用是怎样的。(以 IA32 型 CPU 指令集为例)IA32 的程序中使用栈...转载 2019-08-22 12:32:28 · 93 阅读 · 0 评论 -
Jvm之用java解析class文件
前言:身为一个java程序员,怎么能不了解JVM呢,倘若想学习JVM,那就又必须要了解Class文件,Class之于虚拟机,就如鱼之于水,虚拟机因为Class而有了生命。《深入理解java虚拟机》中花了一整个章节来讲解Class文件,可是看完后,一直都还是迷迷糊糊,似懂非懂。正好前段时间看见一本书很不错:《自己动手写Java虚拟机》,作者利用go语言实现了一个简单的JVM,虽然没有完整实现JVM...原创 2019-08-21 19:37:37 · 339 阅读 · 0 评论 -
清蒸 JVM (一)
前言JVM(Java Virtual Machine)Java 虚拟机是整个 java 平台的基石,是 java 系统实现硬件无关与操作系统无关的关键部分,是保障用户机器免于恶意代码损害的屏障。Java开发人员不需要了解JVM是如何工作的,**但是,**了解 JVM 有助于我们更好的开(通)发(过) java(公司) 程(面)序(试)。写这篇文章的目的:总结所学的 JVM 知识帮助想了解 ...转载 2019-08-21 14:12:25 · 112 阅读 · 0 评论 -
java编译期优化
java语言的编译期其实是一段不确定的操作过程,因为它可以分为三类编译过程:1.前端编译:把.java文件转变为.class文件2.后端编译:把字节码转变为机器码3.静态提前编译:直接把*.java文件编译成本地机器代码从JDK1.3开始,虚拟机设计团队就把对性能的优化集中到了后端的即时编译中,这样可以让那些不是由Javac产生的Class文件(如JRuby、Groovy等语言的Class...转载 2019-08-21 14:13:51 · 112 阅读 · 0 评论 -
Jvm 系列(二):Jvm 内存结构
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局。JVM内存结构...转载 2019-08-21 15:41:53 · 72 阅读 · 0 评论 -
Jvm 系列(三):GC 算法 垃圾收集器
这篇文件将给大家介绍GC都有哪几种算法,以及JVM都有那些垃圾回收器,它们的工作原理。概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃...转载 2019-08-21 15:43:07 · 81 阅读 · 0 评论 -
Jvm 系列(八):Jvm 知识点总览
在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人身上,那人没什么事,却把你震伤了,你还怎么...转载 2019-08-21 17:17:53 · 75 阅读 · 0 评论 -
jvm 系列(九):如何优化 Java GC 「译」
本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作。Sangmin Lee发表在Cubrid上的”Become a Java GC Expert”系列文章的第三篇《How to Tune Java Garbage Collection》,本文的作者是韩国人,写在JDK 1.8发布之前,虽然有些地方有些许过时,但整体内容还是非常有价值的。译者此前也看到有...转载 2019-08-21 17:19:45 · 105 阅读 · 0 评论 -
JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
1.背景2.为什么废弃永久代(PermGen)3.深入理解元空间(Metaspace)4.总结====正文分割线=一、背景1.1 永久代(PermGen)在哪里?根据,hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了):上图引自网络,但有个问题:方法区和heap堆都是线程共享的内存区域。关于方法区和永久代:在HotSpot JVM中,这次讨论的永久代,就是上图的方法...转载 2019-08-21 17:57:50 · 193 阅读 · 0 评论 -
HotSpot JVM 内存管理
关于 JVM 内存管理或者说垃圾收集,大家可能看过很多的文章了,笔者准备给大家总结下。这算是系列的第一篇,接下来一段时间会持续更新。本文主要是翻译《Memory Management in the Java HotSpot Virtual Machine》白皮书的前四章内容,这是 2006 的老文章了,当年发布这篇文章的还是 Sun Microsystems,以后应该会越来越少人记得这家曾经无比...转载 2019-08-21 19:29:04 · 104 阅读 · 0 评论 -
G1 垃圾收集器介绍
文章目录之前根据 Sun 的内存管理白皮书介绍了在 HotSpot JVM 分代算法中的几个垃圾收集器,本文将介绍 G1 垃圾收集器。G1 的主要关注点在于达到可控的停顿时间,在这个基础上尽可能提高吞吐量,这一点非常重要。G1 被设计用来长期取代 CMS 收集器,和 CMS 相同的地方在于,它们都属于并发收集器,在大部分的收集阶段都不需要挂起应用程序。区别在于,G1 没有 CMS 的碎片化问...转载 2019-08-21 19:29:37 · 122 阅读 · 0 评论 -
Jvm 系列(一):Java 类的加载机制
1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并不需要等到某个类被“首次主动使用”时再...转载 2019-08-20 20:08:00 · 109 阅读 · 0 评论