JVM
牧竹子
且行且珍惜
展开
-
常用JVM命令参数
(1)-Xms20M表示设置堆容量的最小值为20M,必须以M为单位(2)-Xmx20M表示设置堆容量的最大值为20M,必须以M为单位。将-Xmx和-Xms设置为一样可以避免堆自动扩展。大的项目-Xmx和-Xms一般都要设置到10G、20G甚至还要高(3)-verbose:gc表示输出虚拟机中GC的详细情况(4)-Xss128k表示可以设置虚拟机栈的大小为128k(5)-Xoss128k表示设置本地方原创 2017-03-11 00:39:29 · 567 阅读 · 0 评论 -
常见OOM现象
常见OOM现象《java 特种兵 上册》 3.6 常见的OOM现象( 136-146页),看此节后的总结。OOM的实际场景是很多的,这里介绍常见的,同时结合网络与实际测试中的一些资料信息。一.HeapSize OOM(堆空间内存溢出)关键字:java.lang.OutOfMemoryError:java heap space意思:堆空间溢出。老年代区域剩余的内存,已经无法满足将要晋升到老...转载 2019-09-25 22:49:35 · 1155 阅读 · 0 评论 -
Java死锁排查
简介本篇整理两个排查问题的简单技巧,一个是java死锁排查,这个一般在面试的时会问到,如果没有写多线程的话,实际中遇到的机会不多;第二个是java cpu 100%排查,这个实际的开发中,线的应用出现这个问题可能性比较大,所以这里简单总结介绍一下,对自己学习知识的一个整理,提高自己的解决问题能力。Java死锁排查通过标题我们就要思考怎么排查代码中出现了死锁?作为技术人员(工程师),在面对...转载 2019-07-14 01:19:20 · 1251 阅读 · 0 评论 -
Java应用CPU占用100%原因分析
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。使用top命令查看cpu占用资源较高的进程PID根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程...转载 2019-07-14 00:41:25 · 5947 阅读 · 1 评论 -
类加载机制:双亲委任模型和tomcat类加载器
简介类是如何加载的,那么必须要面对的几个问题如下什么是类加载机制?什么是双亲委任模型?如何破坏双亲委任模型?Tomcat 的类加载器是怎么设计的?类加载机制Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写的。系统提供的类加载器主要有下面三个:引导类加载器(bootstrap class loader):它用...原创 2018-03-07 01:20:18 · 1261 阅读 · 0 评论 -
帮你深入理解 JAVA 对象创建的过程
说明:本文中的JVM限于HotSpot JVM,详细介绍了,对象在哪里创建、创建的步骤是什么、创建之后的对象长什么样、以及想要使用该对象的时候如何访问。1 对象在哪里创建这个问题,就是在你买房子之前,要确定在哪里买。排除房产投资什么的,肯定是在你的工作地买啦。Java 是面向对象的编程语言,那么,对象到底是在哪里创建的呢?首先明确一点,几乎所有的对象实例和数组都在堆中分配。这里需要了解 JVM 内存转载 2017-12-12 21:16:44 · 378 阅读 · 0 评论 -
jvm虚拟机内存回收GC
jvm虚拟机特性之内存分配与回收 java与c系语言最大的区别之一就是内存的回收,在C或C++中需要程序员主动释放掉不再需要的内存空间,而在java中这一切都交由jvm处理。虚拟机是如何管理这些对象的生命周期的呢?下面将进行介绍。 一,堆详述 GC主要发生在堆内存中,这部分我们会对堆内存进行比较详细的描述。 我们知道对象是在堆上分配的,一直到垃圾收集器把这些对象回收掉之前,他们会一直占据堆内原创 2017-12-11 20:52:45 · 676 阅读 · 0 评论 -
JVM内存区域
前言说到Java内存区域,可能很多人第一反应是“堆栈”。首先堆栈不是一个概念,而是两个概念,堆和栈是两块不同的内存区域,简单理解的话,堆是用来存放对象而栈是用来执行程序的。其次,堆内存和栈内存的这种划分方式比较粗糙,这种划分方式只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块,Java内存区域的划分实际上远比这复杂。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不转载 2017-03-11 00:36:33 · 442 阅读 · 0 评论 -
JVM内存分配样例
JVM内存分配使用对JVM不同内存区域灌入数据,导致相关区域内存溢出,来验证JVM内存分配 先看一个经典问题:String s1 = "小金子(aub)"; String s2 = "小金子(aub)"; String s3 = "小金子" + "(aub)"; String s4 = new String("小金子(aub)"); String s5 = "小金子" + new转载 2017-12-12 18:25:39 · 324 阅读 · 0 评论 -
JVM内存监控工具
基于Sun HotSpot JVM 这里将介绍几款sun hotspot jvm 自带的监控工具: 请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下jps(JVM Process Status Tool):JVM机进程状况工具用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。与unix上的ps类似,用来转载 2017-12-12 18:18:05 · 1417 阅读 · 0 评论 -
JMM概述
简介什么是JMM内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象描述,不同架构下的物理机拥有不一样的内存模型,Java虚拟机是一个实现了跨平台的虚拟系统,因此它也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。因此它不是对物理内存的规范,而是在虚拟机基础上进行的规范从而实现平台一致性,以达到Java程序能够“一次编写,到处运行原创 2017-10-31 18:06:53 · 63038 阅读 · 14 评论 -
写代码实现堆溢出、栈溢出、永久代溢出、直接内存溢出
文章目录常见溢出一、堆溢出二、栈溢出1、栈空间不足——StackOverflowError实例2、栈空间不足——OutOfMemberError实例三、永久代溢出1、永久代溢出——常量池溢出2、永久代溢出——方法区溢出四、直接内存溢出原文出处常见溢出栈溢出(StackOverflowError)堆溢出(OutOfMemoryError:Java heap space)永久代溢出(OutOf...转载 2019-09-25 23:32:44 · 512 阅读 · 0 评论