![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm虚拟机
文章平均质量分 68
菠萝科技
"Java并没有衰落.而是刚刚开始"
展开
-
jvm和底层操作系统交互简介
肉眼看计算机是由 CPU 、内存、显示器这些硬件设备组成,但大部分人从事的是软件开发工作。计算机底层原理就是连通硬件和软件的桥梁,理解计算机底层原理才能在程序设计这条路上越走越快,越走越轻松。从操作系统层面去理解高级编程语言的执行过程,会发现好多软件设计都是同一种套路,很多语言特性都依赖于底层机制,今天为你一一揭秘。结合 CPU 理解一行 Java 代码是怎么执行的根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。enter转载 2021-10-12 07:57:12 · 733 阅读 · 0 评论 -
jvm:synchronized 比较好的文章
链接:http://blog.csdn.net/angle_birds/article/details/19609011原创 2017-02-27 13:41:14 · 1025 阅读 · 1 评论 -
Garbage-First Garbage Collection
https://www.researchgate.net/publication/221032945_Garbage-First_garbage_collectionDavid Detlefs, Christine Flood, Steve Heller, Tony PrintezisSun Microsystems, Inc.1 Network Drive, Burlington, MA 01803, USA{david.detlefs, christine.flood, steve.hel翻译 2021-06-14 10:56:53 · 718 阅读 · 0 评论 -
java 虚拟线程Loom/纤程/轻量级线程和异步编程Future,哪个是未来?
Loom项目的开始于2017年底,现在来看,虚拟线程(纤程/轻量级线程)和异步谁是未来呢?我的答案是:虚拟线程。先写个目录。1 开发难度,对已有项目的影响2 xxxx的态度3 项目官方的想法,为什么要开发虚拟线程项目4 对已有协程框架框架市场的冲击...原创 2021-04-27 10:32:33 · 949 阅读 · 2 评论 -
jvm堆内存溢出后,其他线程是否可继续工作
转载自:原文链接作者:https://gosaintmrc.github.io/最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。由于题目中给出的OOM,java中OOM又分很多类型;比如: 堆溢出(“java.lang.OutOfMemoryError: Java heap space”) 永久带溢出(“java.lang..原创 2021-04-25 07:18:33 · 311 阅读 · 0 评论 -
jdk 14 基础架构部的zgc垃圾收集实测
“基础架构部的zgc垃圾收集实测”,jdk 11开始的zgc有多强,文章说太多了。同事用ES7.7 + jdk 14测试了下实际效果。结果是,关注和调优的重心,都聚焦在万一垃圾回收的速度跟不上分配的速度,发生的allocation stall停顿上,有点像以前操心cms,full gc的stw。allocation stall不能说是stop the world,它可能是按region 按线程去停的,实际每条线程停顿的时间不一,有的停几毫秒,有的停几百毫秒。jmx暴露的监控指标只有zgc count和原创 2020-07-05 08:00:28 · 1193 阅读 · 5 评论 -
JDK14来了:9大重磅特性解读
作者:阿飞的博客转载自:https://www.jianshu.com/p/0364ba3d4750JEP 305: Pattern Matching for instanceof (Preview)JEP 358: Helpful NullPointerExceptionsJEP 361: Switch Expressions (Standard)JEP 345: NUMA-A...转载 2020-01-29 17:34:07 · 2460 阅读 · 0 评论 -
目前主流的 Java 虚拟机有哪些?
Java SE / Java EEHotspot, JRockit(Oracle) J9, JikesRVM(IBM) Zulu, Zing (Azul)Android / Android兼容系统Dalvik / ART研究性质的JVMJikes RVM Maxine VM Graal VM整理自R大原创 2020-01-28 10:33:27 · 2544 阅读 · 1 评论 -
java:跨语言通用虚拟机GraalVM
GraalVM 简介GraalVM 是一个跨语言的通用虚拟机,支持Java、Scala、Groovy、Kotlin 等基于 JVM 的语言,以及 C、C++ 等基于 LLVM 的语言,还支持其他像 JavaScript、Ruby、Python 和 R 语言等。另外,GraalVM可以通过前端的LLVM执行JVM上面的原生代码。GraalVM 1.0版本是基于JDK8的。GraalVM...原创 2020-01-11 12:06:02 · 1994 阅读 · 1 评论 -
java的编译器,解释器和即时编译器概念
菠萝备注:我更倾向于周志明对编译器的"分类"的看法,编译过程中有三类比较有有代表性的编译器:前端编译器:Sun的javac,Eclipse的增量编译器EJC。把*.java编译为*.class JIT编译器:Hotsport VM的c1,c2编译器把字节码编译为机器码。 AOT编译器:GCJ(GNUCompiler forJava )、excelsior JET。*.java 文...原创 2019-04-20 13:18:55 · 4129 阅读 · 0 评论 -
垃圾回收器PS MarkSweep和serial old使用算法异同
[讨论] 关于GC参数的问题ParallelScavenge(PS)的young collector就如其名字所示,是并行的拷贝式收集器。本来这个young collector就是“Parallel Scavenge”所指,但因为它不兼容原本的分代式GC框架,为了凸显出它是不同的,所以它的young collector带上了PS前缀,全名变成PS Scavenge。对应的,它的old colle...原创 2019-04-20 20:16:33 · 14359 阅读 · 1 评论 -
Linux与JVM的内存关系分析
原文出处:美团技术团队引言在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。同时,由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追...转载 2019-04-02 23:09:39 · 283 阅读 · 0 评论 -
浅析Java的线程调度策略
原文链接:https://www.jianshu.com/p/3f6b26ee51ce作者:杨兴强原文来源:开点工作室(ID:kaidiancs)一.从一个例子开始看着Java线程执行起来的那种任性和随意,我们不免会问:是谁在主导Java线程的执行?它按照什么样的策略来调度Java线程?本文将带着这样的问题,探讨Java线程的调度机制。程序的问题还是先从代码说起吧,下面是一个广泛...转载 2019-03-13 23:52:34 · 3933 阅读 · 3 评论 -
操作系统:进程和程序关系类比/ java中线程是哪种实现
本文分三个小节1 线程模型2 线程的实现3 java中线程是用户线程,内核线程,轻量级进程???3.1 临界区 互斥 3.2 信号量 管程前两小节是来自操作系统。第三小节:看到操作系统中线程实现的三种方式,忽然想起我以前看到的一个问题,也很契合本文今天的主题,便加了进来。1 线程进程2 线程实现(也有广义上分:除了内核线程其他都是用户线程...原创 2018-12-09 13:44:26 · 793 阅读 · 2 评论 -
网上关于「阿里P7程序员、资深架构师不知 jvm、红黑树」一事的争议
原文链接:https://www.zhihu.com/question/2976473301---------------默认排序winter发言仅代表个人观点157 人赞同了该回答需要知道,所谓面试题,没有任何价值,面试是一个不对等的过程,如果是毫无章法的随机“出题”,那么两个人互相面试不过将会是常态。 正常的面试官不会拿“xx问题会不会”来评价候选人。...原创 2018-12-01 21:17:15 · 1756 阅读 · 2 评论 -
主题:用happen-before规则重新审视DCL
几篇合集。1 单例模式“双重检查锁定Double-Checked Locking”线程安全问题https://blog.csdn.net/wabiaozia/article/details/847238992 主题:用happen-before规则重新审视DCLhttps://blog.csdn.net/wabiaozia/article/details/847274073 D...原创 2018-12-02 21:42:35 · 1214 阅读 · 2 评论 -
单例模式“双重检查锁定Double-Checked Locking”线程安全问题
几篇合集。1 单例模式“双重检查锁定Double-Checked Locking”线程安全问题https://blog.csdn.net/wabiaozia/article/details/847238992 主题:用happen-before规则重新审视DCLhttps://blog.csdn.net/wabiaozia/article/details/847274073 D...翻译 2018-12-02 18:00:39 · 4451 阅读 · 4 评论 -
好的博客
1 http://blog.csdn.net/u013256816/article/category/5748481 可以学习 1 设计模式 2 并发 3 集合源码 4 虚拟机原创 2016-06-30 09:52:50 · 804 阅读 · 15 评论 -
深入分析 ThreadLocal 内存泄漏问题
原文链接:http://blog.xiaohansong.com/2016/08/06/ThreadLocal-memory-leak/?hmsr=toutiao.io&utm_medium=toutiao.i抛砖引玉,结合其他博客看前言ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量...原创 2017-12-20 14:22:28 · 303 阅读 · 0 评论 -
java内存分配和强转/转型(向上和向下转型)相关
java 内存分配 http://blog.csdn.net/javaoverflow原创 2016-09-09 16:50:03 · 2868 阅读 · 4 评论 -
jvisualvm安装visualgc插件
转载链接:http://blog.csdn.net/keketrtr/article/details/74448127-----------------++----------------------jdk1.7自带jvisualvm可以对java应用进行监控。其中有个插件visualgc可以查看jvm垃圾回收的具体信息。安装插件的步骤是打开jvisualvm,点击工具->插件,在可用插件列...转载 2018-02-25 14:58:35 · 1089 阅读 · 0 评论 -
JVM监控与调优
1 理论:1 链接:http://www.cnblogs.com/zhguang/p/Java-JVM-GC.html2 实战:VisualVM 1 jvisualvm默认不包含visualgc插件,且安装时无法连接怎么处理?见我博客:http://blog.csdn.net/wabiaozia/article/details/793688942 抽样器里如何堆转储,统计某一特定时刻 JVM 中的...原创 2018-02-22 22:01:57 · 239 阅读 · 0 评论 -
容器(tomcat等)关闭后,由于守护线程线程池等线程无法销毁,导致容器关闭失败
草稿:1 如何找出某个进程下资源消耗最大的线程2 如何使用jstack根据线程查询对应的功能类3 销毁“僵尸”线程的两种方式:1 jvm关闭,关闭钩子 Runnable.addShutdownHook 2 容器销毁时关闭 3 spring的DisposableBean 4 使用钩子的注意事项...原创 2018-05-12 09:18:27 · 6680 阅读 · 0 评论 -
G1垃圾收集器介绍-占小狼
为解决CMS算法产生空间碎片和其它一系列的问题缺陷,HotSpot提供了另外一种垃圾回收策略,G1(Garbage First)算法,通过参数-XX:+UseG1GC来启用,该算法在JDK 7u4版本被正式推出,官网对此描述如下:The Garbage-First (G1) collector is a server-style garbage collector, targeted for mu...转载 2018-04-29 16:46:59 · 577 阅读 · 0 评论 -
java中int和byte转换相关
接:1 浅谈Java中的补零扩展和补符号位扩展 2 反码补码,为什么8位有符号数的范围为“-128 — +127”原文链接:https://my.oschina.net/joymufeng/blog/139952下面这行代码的输出是什么?public static void main(String[] args) { System.out.println(0xfffffff...转载 2018-08-18 15:39:55 · 517 阅读 · 2 评论 -
预热warmup过程
1 https://blog.csdn.net/feelwing1314/article/details/80359785今天群里小伙伴黄晓峰VIVO咨询一个问题:”dubbo接口怎么做预热呢,每次上线,都会有一小部分超时?”,熟悉JVM都知道,JVM重启后有一段预热过程,要运行一段时间,它的性能才能达到最佳状态;阿里JVM团队就针对这个缺陷进行了优化,其特性名曰:jwarmup,可以点击Al...转载 2018-08-25 23:26:28 · 5995 阅读 · 0 评论 -
Java三种编译方式:前端编译 JIT编译 AOT编译
原文链接:https://blog.csdn.net/tjiyu/article/details/53748965 Java程序代码需要编译后才能在虚拟机中运行,编译涉及到非常多的知识层面:编译原理、语言规范、虚拟机规范、本地机器码优化等;了解编译过程有利于了解整个Java运行机制,不仅可以使得我们编写出更优秀的代码,而且还可以使得在JVM调优时更得心应手。 下面我们先来...转载 2018-08-25 23:34:50 · 2633 阅读 · 2 评论 -
Java 编程的动态性,第 8 部分 用代码生成取代反射
原文链接:https://www.ibm.com/developerworks/cn/java/j-dyn0610/ --Dennis Sosnoski不要错过本系列的其他内容第 1 部分,“ 类和类装入”(2003 年 4 月)第 2 部分,“ 引入反射” (2003 年 6 月)第 3 部分," 应用反射" (2003 年 7 月)第 4 部分,“ 用 Javassist ...翻译 2018-11-08 20:03:03 · 227 阅读 · 1 评论 -
Java_performance
原文连接:https://en.wikipedia.org/wiki/Java_performance内容1虚拟机优化方法 1.1即时编译 1.2自适应优化 1.3垃圾收集 1.4其他优化方法 1.4.1压缩的哎呀 1.4.2拆分字节码验证 1.4.3逃逸分析和锁定粗化 1.4.4注册分配改进 1.4.5类数据共享 2绩效改进的历史...翻译 2018-12-02 19:47:14 · 422 阅读 · 0 评论 -
JVM的Classloader机制
原文链接:https://segmentfault.com/q/1010000000155690/a-1020000000155732首先,你需要了解一下JVM的Classloader机制(详细请自行google之)。简而言之,JVM的classloader加载继承关系分为BootstarpClassLoader --> ExtClassLoader --> SystemClassLoad原创 2017-02-07 09:31:08 · 565 阅读 · 0 评论