![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java虚拟机
文章平均质量分 72
jamespengo
这个作者很懒,什么都没留下…
展开
-
JVM 内存溢出
在实际编程过程中,会遇到一些OutOfMemory(OOM)异常。通过模拟。我们可以直接指出这些场景的本质,从而在纷繁复杂的千万行代码中避免这样去Coding。导致OOM的情况有多种,包括Java或Native Method Stack的内存不足或者栈空间溢出、Heap内存溢出、Non-heap内存溢出、Direct Memory溢出。 1.Java Method Stack栈溢出模拟 什原创 2018-02-01 17:30:49 · 186 阅读 · 0 评论 -
JAVA 内存区域
运行时数据区域 java虚拟机在执行java程序的时候会把它管理的内存分为若干不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间。根据java虚拟机规范规定,虚拟机所管理的内存区域包括以下几个区域: 1.程序计数器(线程私有) 程序计数器是一块较小的内存区域,它是当前线程所执行的字节码的行号指示器,在虚拟机的实现里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要...原创 2018-02-01 17:38:36 · 181 阅读 · 0 评论 -
JVM垃圾收集GC
1.如何判断垃圾对象 1)引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器减1;任何时刻计数器为0的对象就是不可能再被使用的。 引用技术算法实现相对简单,判定效率也比较高(ActionScript3,Python语言等都使用此算法),但是java虚拟机没有使用这个算法,主要原因是引用技术算法很难解决循环引用的问题 2)可达性...原创 2018-02-01 17:46:19 · 148 阅读 · 0 评论 -
Heap分区和分代概念
Heap分区的目的 1. 为了分代:不同代的对象放到不同的内存分区中,实现“代提升”,也方便实现对不同分代采用不同的垃圾收集算法。 2. 垃圾收集算法需要:新生代GC使用到复制算法,该算法需要将对应的分区划分成三个分区:Eden/S0/S1。 术语 Generation代 - YongGeneration/NewGeneration:新生代,在Eden/S0/S1的存活的对象。 -转载 2018-02-01 17:47:41 · 324 阅读 · 0 评论 -
JVM内存回收策略
对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程有限分配在TLAB上。少数情况下也可能会直接分配在老年代。 内存分配策略: 对象优先在Eden分配 大多数情况情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。 注:新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java队形大多都是具备朝...原创 2018-02-01 17:48:40 · 162 阅读 · 0 评论 -
MinorGC or FullGC
Minor GC 还是 Full GC?原创 2018-02-01 17:50:46 · 200 阅读 · 0 评论 -
性能监控工具
一、图形化监控工具: 在JDK安装目录bin下面有两个可视化监控工具 1. JConsole(Java Monitoring and Management Console) 基于JMX的可视化管理工具。 2. VisualVM(All-in-one Java Troubleshooting Tool)随JDK发布的最强大的运行监视和故障处理程序。 推荐使用VisualVM,他有很多插件,转载 2018-02-01 18:25:11 · 237 阅读 · 0 评论 -
基于栈和基于寄存器的虚拟机
1、解析器与解释器 解析器是parser,而解释器是interpreter。两者不是同一样东西,不应该混用。 前者是编译器/解释器的重要组成部分,也可以用在IDE之类的地方;其主要作用是进行语法分析,提取出句子的结构。广义来说输入一般是程序的源码,输出一般是语法树(syntax tree,也叫parse tree等)或抽象语法树(abstract syntax tree,A转载 2018-02-01 18:35:04 · 497 阅读 · 0 评论