
java jvm
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM参数设置、分析
转载自JVM参数设置、分析不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的)...转载 2019-07-09 22:03:47 · 235 阅读 · 0 评论 -
JVM(Java虚拟机)优化大全和案例实战
转载自JVM(Java虚拟机)优化大全和案例实战堆内存设置原理JVM堆内存分为2块:PermanentSpace 和 Heap Space。Permanent 即持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即...转载 2019-07-21 11:33:16 · 143 阅读 · 0 评论 -
从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?
转载自 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?先回顾一下Java程序执行的过程:Java程序执行时,第一步系统创建虚拟机进程,然后虚拟器用类加载器Class Loader加载java程序类文件到方法区。方法区放哪些东西?存放加载过的类信息、常量、静态变量、及jit编译后的代码(类方法)等数据的内存区域。它是线程共享的。方法区存放的信息包括:类的基本信息、运行时常量池、变...转载 2018-07-06 23:13:44 · 477 阅读 · 0 评论 -
类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?
转载自 类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?在回答这个问题之前先了解一下Java的一些基础知识。我们知道Java程序运行在虚拟机环境里,那我们先看一下虚拟机的大致内存结构。如下图所示,虚线框为整个虚拟机内存区域,其中有颜色的区域为Java程序所占的内存区域。图中可见Java程序所占的内存区域可划分成5个部分:程序计数器、虚拟机栈(线程栈)、本地方法栈、堆(he...转载 2018-07-06 23:13:32 · 406 阅读 · 0 评论 -
Java 虚拟机对锁优化所做的努力
转载自 Java 虚拟机对锁优化所做的努力作为一款公用平台,JDK 本身也为并发程序的性能绞尽脑汁,在 JDK 内部也想尽一切办法提供并发时的系统吞吐量。这里,我将向大家简单介绍几种 JDK 内部的 "锁" 优化策略。1、 锁偏向锁偏向是一种针对加锁操作的优化手段。如果一个线程获得了锁,那么锁就进入偏向模式。当这个线程再次请求锁时,无须再做任何同步操作。这样就节省了大量有关锁申...转载 2018-10-08 19:39:48 · 244 阅读 · 0 评论 -
彻底理解JVM常考题之分级引用模型
转载自 彻底理解JVM常考题之分级引用模型本文通过探析Java中的引用模型,分析比较强引用、软引用、弱引用、虚引用的概念及使用场景,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目提供参考。Java的引用对于Java中的垃圾回收机制来说,对象是否被应该回收的取决于该对象是否被引用。因此,引用也是JVM进行内存管理的一个重要概念。Java中是JVM负责内存的分配和回收,这是...转载 2018-11-18 11:03:19 · 255 阅读 · 0 评论 -
Java对象引用四个级别(强、软、弱、虚)
转载自 Java对象引用四个级别(强、软、弱、虚)最近,高级Java技术栈微信群中,有一些猿友在讨论JVM中对象的周期问题,有谈到引用的级别,现在为大家做个总结吧,虽然大多数公司并没有意识或者用到这些引用,但了解这些基本概念对熟悉整个垃圾回收机制和面试是非常有帮助的。为了使程序能更加灵活地控制对象的生命周期,从JDK1.2版本开始,JDK把对象的引用级别分为了以下四种。这4种级别由...转载 2018-04-25 10:04:34 · 181 阅读 · 0 评论 -
Java虚拟机必学之四大知识要点,附学习资料
转载自 Java虚拟机必学之四大知识要点,附学习资料作为一位 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,我们还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutOfMemory 等异常时,不会束手无策,不会一脸懵逼地上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。这次,我会从我专栏里提取了学习 ...转载 2019-01-02 23:19:10 · 253 阅读 · 0 评论 -
关于 JVM 内存的 N 个问题
转载自关于 JVM 内存的 N 个问题JVM的内存区域是怎么划分的?JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础。那么JVM内存区域是怎么划分的呢?首先是程序计数器(Program Counter Register),在JVM规范中,每个线程都有自己的程序计数...转载 2019-07-09 22:03:30 · 148 阅读 · 0 评论 -
BATJ面试必会|Jvm 虚拟机篇
转载自BATJ面试必会|Jvm 虚拟机篇目录 一、运行时数据区域 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 二、垃圾收集 判断一个对象是否可被回收 引用类型 垃圾收集算法 ...转载 2019-04-30 19:45:04 · 335 阅读 · 0 评论 -
jvm系列(四):jvm调优-命令篇
转载自 jvm系列(四):jvm调优-命令篇运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依...转载 2018-04-22 21:45:50 · 296 阅读 · 0 评论 -
jvm系列(十一):Java 8-从持久代到metaspace
转载自 jvm系列(十一):Java 8-从持久代到metaspaceJava 8介绍了一些新语言以及运行时新特点。其中一个特点便是完全移除了持久代(PermGen),自从Oracle公司发布了JDK1.7后就已经宣布了这个决定。还有比如内部字符串,从JDK1.7开始就从持久代移除了,JDK8的发布彻底废除了它。在这个部分,我们会讨论持久代的继任者:Metaspace。当执行一个Java程序并出现...转载 2018-04-22 22:31:02 · 327 阅读 · 0 评论 -
jvm系列(十):教你如何成为Java的OOM Killer
转载自 jvm系列(十):教你如何成为Java的OOM Killer前言虽然事隔半年,当时排查线上OOM事故的过程记忆犹新,每一个步骤都历历在目,感谢业务组、系统部、压测组、监控与应急部对架构组的强力支持,得以让这个Java内存问题水落石出,经过半年多的全面的应用日志 切割方式的改造,现在基本没有OOM的问题了,线上服务运行非常健康,对可用性的保障起到了很大的作用,如果你在经历OOM,读了这个文章...转载 2018-04-22 22:27:59 · 224 阅读 · 0 评论 -
关于Jvm知识看这一篇就够了
转载自 关于Jvm知识看这一篇就够了2016年左右的时候读了周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》,读完之后受益匪浅,让我对Java虚拟机有了一个完整的认识,这是Jvm书籍中最好的读物之一。后来结合实际工作中遇到的问题,写了一系列关于Jvm的文章,其中开篇的几篇内容大部分参考于此书,后期加入自己一些实战的理解,转载了几篇高质量的文章,就形成了此系列读物。在金三银四的跳槽季中,很...转载 2018-04-21 23:33:30 · 237 阅读 · 0 评论 -
jvm系列(一):java类的加载机制
转载自 jvm系列(一):java类的加载机制1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。...转载 2018-04-21 23:35:06 · 335 阅读 · 0 评论 -
jvm系列(二):JVM内存结构
转载自 jvm系列(二):JVM内存结构所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说...转载 2018-04-21 23:57:51 · 204 阅读 · 0 评论 -
jvm系列(三):GC算法 垃圾收集器
转载自 jvm系列(三):GC算法 垃圾收集器 概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,...转载 2018-04-22 21:43:54 · 227 阅读 · 0 评论 -
jvm系列(五):Java GC 分析
转载自 jvm系列(五):Java GC 分析Java GC就是JVM记录仪,书画了JVM各个分区的表演。什么是 Java GCJava GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自...转载 2018-04-22 21:57:29 · 333 阅读 · 0 评论 -
jvm系列(六):Java服务GC参数调优案例
转载自 jvm系列(六):Java服务GC参数调优案例本文介绍了一次生产环境的JVM GC相关参数的调优过程,通过参数的调整避免了GC卡顿对JAVA服务成功率的影响。这段时间在整理jvm系列的文章,无意中发现本文,作者思路清晰通过步步分析最终解决问题。我个人特别喜欢这种实战类的内容,经原作者的授权同意,将文章分享于此。备注部分为本人添加,主要起到说明的作用。背景以及遇到的问题我们的Java HTT...转载 2018-04-22 22:03:42 · 260 阅读 · 0 评论 -
jvm系列(七):jvm调优-工具篇
转载自 jvm系列(七):jvm调优-工具篇16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化。工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到达...转载 2018-04-22 22:10:20 · 287 阅读 · 0 评论 -
jvm系列(八):jvm知识点总览
转载自 jvm系列(八):jvm知识点总览在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人...转载 2018-04-22 22:12:50 · 224 阅读 · 0 评论 -
jvm系列(九):如何优化Java GC
转载自 jvm系列(九):如何优化Java GC「译」本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三篇《How to Tune Java Garbage Collection》,本文的作者是韩国人,写在JDK 1.8发布之前,虽然有些地方有些许过时,但整体内容还是非常有价值的。译者此前也看到有人翻译了本文,发现其中有许多错漏生...转载 2018-04-22 22:26:09 · 244 阅读 · 0 评论 -
JVM菜鸟进阶高手之路
本文转载自公众号 匠心零度问题现象代码如下,使用 ParNew + Serial Old 回收器组合与使用 ParNew + CMS 回收器组合时,结果为什么差异如此之大 ? private static final int _1MB = 1024 * 1024; public static void main(String[] args) throws Exception { ...转载 2018-04-12 12:26:00 · 336 阅读 · 0 评论