
JVM
K'illCode
记录自己的学习历程,大部分来自转载,如有侵权联系删除.......
展开
-
浅析java内存模型--JMM(Java Memory Model)
在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/代码块需要在多线程之间互...原创 2019-02-21 18:49:43 · 202 阅读 · 0 评论 -
JVM优化之逃逸分析与分配消除
在这期文章中,我们将要深入介绍一下逃逸分析(escape analysis)技术,这是JVM最有意思的优化手段之一。逃逸分析是JVM的一项自动分析变量作用域的技术,它可以用来实现某些特殊的优化,后续我们也会分析下这些优化。在开始之前,你只需要掌握一些HotSpot JVM的基本工作原理就可以了。 要了解逃逸分析背后的基本原理,我们先来看下这段有问题的C代码——当然这个是没法用Java来写的...转载 2019-08-27 13:35:36 · 179 阅读 · 0 评论 -
17 个 JVM 参数
前言 大家都知道,jvm在启动的时候,会执行默认的一些参数。一般情况下,这些设置的默认参数应对一些平常的项目也够用了。 但是如果项目特别大了,需要增加一下堆内存的大小、或者是系统老是莫明的挂掉,想查看下gc日志来排查一下错误的原因,都需要咱们手动设置这些参数。 各个参数介绍 1.verbose:gc 表示,启动jvm的时候,输出jvm里面的gc信息。格式如下: [FullG...原创 2019-07-07 10:25:06 · 311 阅读 · 0 评论 -
美团面试题:JVM堆内存溢出后,其他线程是否可继续工作?
作者:大佛拈花 来源:http://t.cn/Ai9VH6oE 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。 由于题目中给出的OOM,java中OOM又分很多类型;比如: 堆溢出(“java.lang.OutOfMemory...转载 2019-06-12 11:40:59 · 286 阅读 · 0 评论 -
图解 Java 垃圾回收机制
原文:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html 译文:https://www.oschina.net/translate/java-gc 翻译:Rhys_Lee, AzureSora, 溪边九节, 小小菜鸟鸡 什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对...转载 2019-06-07 14:01:25 · 174 阅读 · 2 评论 -
JVM最多支持多少个线程?
McGovernTheory在StackOverflow提了这样一个问题: Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗? Eddie的回答: 这取决于你使用的CPU,操作系统,其他进程正在做的事情,你使用的Java的版本,还有其他的因素。我曾经见过一台Windows服务器在宕机之前有超过6500个线程。当然,大多数线程什么事情也没有做。一旦一...原创 2019-05-27 11:37:59 · 353 阅读 · 0 评论 -
jvm的那些设置参数
前言 大家都知道,jvm在启动的时候,会执行默认的一些参数。一般情况下,这些设置的默认参数应对一些平常的项目也够用了。但是如果项目特别大了,需要增加一下堆内存的大小、或者是系统老是莫明的挂掉,想查看下gc日志来排查一下错误的原因,都需要咱们手动设置这些参数。 各个参数介绍 1.verbose:gc 表示,启动jvm的时候,输出jvm里面的gc信息。格式如下: [FullGC178K...原创 2019-05-22 16:31:43 · 294 阅读 · 0 评论 -
JVM 与 Linux 的内存关系详解
在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。 从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了? 要分...转载 2019-05-11 09:09:23 · 206 阅读 · 0 评论 -
面试题:你简历中说你擅长JVM调优,给我一个关于Code Cache调优的案例吧。
问题描述:有业务反馈,线上一个应用运行了一段时间之后,在高峰期之后,突然发现处理能力下降,接口的响应时间变长,但是看Cat上的GC数据,一切都很正常。 通过跳板机上机器查看日志,发现一段平时很少见到的日志。 Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been...转载 2019-04-29 19:40:44 · 817 阅读 · 0 评论 -
JVM内存的N个问题
JVM的内存区域是怎么划分的? JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础。那么JVM内存区域是怎么划分的呢? 首先是程序计数器(Program Counter Register),在JVM规范中,每个线程都有自己的程序计数器。这是一块比较小的内存空间,存储当前线程正在...转载 2019-03-27 12:58:31 · 201 阅读 · 0 评论 -
JVM 之 ParNew 和 CMS 日志分析
在两年前的文章 JVM 学习——垃圾收集器与内存分配策略中,已经对 GC 算法的原理以及常用的垃圾收集器做了相应的总结。今天这篇文章主要是对生产环境中(Java7)常用的两种垃圾收集器(ParNew:年轻代,CMS:老年代)从日志信息上进行分析,做一下总结,这样当我们在排查相应的问题时,看到 GC 的日志信息,不会再那么陌生,能清楚地知道这些日志是什么意思,GC 线程当前处在哪个阶段,正在做什么事...原创 2019-03-27 12:58:44 · 192 阅读 · 0 评论 -
JVM核心知识体系知识清单
1.问题 1、如何理解类文件结构布局? 2、如何应用类加载器的工作原理进行将应用辗转腾挪? 3、热部署与热替换有何区别,如何隔离类冲突? 4、JVM如何管理内存,有何内存淘汰机制? 5、JVM执行引擎的工作机制是什么? 6、JVM调优应该遵循什么原则,使用什么工具? 7、JPDA架构是什么,如何应用代码热替换? 8、JVM...原创 2019-03-27 12:59:01 · 749 阅读 · 0 评论 -
JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
一、 技术背景你要了解吧 按照套路是要先装装X,谈谈JVM垃圾回收的前世今生的。说起垃圾回收(GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,早在1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术。设计和优化C++这门语言的专家们要长点心啦~~ 二、 哪些内存需要回收? 猿们都知道JVM的内存结构包括五大区域:程序计数器、虚拟机栈...原创 2019-03-08 13:44:15 · 245 阅读 · 0 评论 -
JVM 发生内存溢出的 8 种原因、及解决办法
Java 堆空间 GC 开销超过限制 请求的数组大小超过虚拟机限制 Perm gen 空间 Metaspace 无法新建本机线程 杀死进程或子进程 发生 stack_trace_with_native_method 1. Java 堆空间 发生频率:5颗星 造成原因 无法在 Java 堆中分配对象 吞...转载 2019-08-25 11:48:44 · 256 阅读 · 0 评论