JVM
编码博客控
这个作者很懒,什么都没留下…
展开
-
深入理解JVM - 内存溢出实战
Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,当对象数量到达最大堆的容量限制后就会产生内存溢出异常。最常见的内存溢出就是存在大的容器,而没法回收,比如:Map,List等。出现下面信息就可以断定出现了堆内存溢出。java.lang.OutOfMemoryError: Java heap space保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这...原创 2020-01-03 20:55:52 · 676 阅读 · 0 评论 -
为什么我的JVM能实际使用的内存比-Xmx指定的少?
眼前的这个问题就是关于不同工具对于可用内存大小检测的差异。其实就是一个工程师在调查一个应用程序的过高的内存使用情况时发现,尽管该程序已经被指定分配2G堆内存,但是JVM检测工具似乎并不能确定进程实际能用多少内存。例如 jconsole显示可用堆内存为1,963M,然而 jvisualvm 却显示能用2,048M。所以到底哪个工具才是对的,为什么检测结果会出现差异呢?这确实是个挺奇怪的问...原创 2019-12-31 22:09:52 · 822 阅读 · 0 评论 -
【搞定Jvm面试】 面试官:谈谈 JVM 类加载过程是怎样的?
类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行...原创 2019-12-29 20:45:54 · 670 阅读 · 0 评论 -
推荐收藏系列:一文理解JVM虚拟机(内存、垃圾回收、性能优化)解决面试中遇到问题
一. JVM内存区域的划分1.1 java虚拟机运行时数据区java虚拟机运行时数据区分布图:JVM栈(Java Virtual Machine Stacks):Java中一个线程就会相应有一个线程栈与之对应,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈,因此栈存储的信息都是跟当前线程(或程序)相关信息的,包括局部变量、程序运行状态、方法返回值、方法出口等等。每一个方...原创 2019-12-19 15:16:31 · 91 阅读 · 0 评论 -
java中JVM的原理重温
一、基础理论知识1、java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明...原创 2019-11-27 21:24:50 · 66 阅读 · 0 评论