Java虚拟机
文章平均质量分 84
买糖买板栗
java
展开
-
Fork/Join框架介绍 顺便测试jvm的内存溢出问题
1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+原创 2016-11-15 11:37:58 · 3891 阅读 · 0 评论 -
异常、堆内存溢出、OOM的几种情况
1、堆内存溢出【情况一】: Java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: -Xms3062m -Xmx3062m 【情况二】 java.lang.Ou转载 2016-12-06 15:58:42 · 2258 阅读 · 0 评论 -
jvm内存溢出分析
包括:1. 栈溢出(StackOverflowError)2. 堆溢出(OutOfMemoryError:java heap space)3. 永久代溢出(OutOfMemoryError: PermGen space)4. OutOfMemoryError:unable to create native threadJava虚拟机规范规定JVM的内存分原创 2016-12-28 18:37:03 · 818 阅读 · 0 评论 -
深入理解Java虚拟机1~内存区域与内存溢出
1、对象的创建vm遇到一条new指令时,首先将会检查这个指令的参数是否能在常亮池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化。2、reference引用Java程序需要通过栈上的reference数据来操作堆上的具体对象。3、java内存管理4、垃圾收集器与内存分配策略5、垃圾收集算法to be con原创 2017-01-03 22:09:13 · 634 阅读 · 0 评论 -
深入理解Java虚拟机2~垃圾收集器与内存分配策略
1、垃圾收集器与内存分配策略2、垃圾收集算法:三个新生代gc收集器:3、垃圾收集算法:年老代gc收集器:Serial Old收集器:定义:单线程收集器,使用标记~整理算法进行处理。使用:与Serial、Parallel Scavenge两个年轻代收集器配合使用,或者作为CMS收集器的后备预案。特性:单线程、STW。Para原创 2017-01-05 23:16:41 · 502 阅读 · 0 评论 -
深入理解Java虚拟机3~垃圾收集器参数总结
垃圾收集器参数总结-XX:+ 启用选项-XX:- 不启用选项-XX:= -XX:= 参数描述-XX:+UseSerialGCJvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收-XX:+UseParNewGC打开此开关后,使用ParNew原创 2017-01-07 19:34:29 · 590 阅读 · 0 评论 -
深入理解Java虚拟机4~类文件结构
类文件结构这章内容很多,知识点也很散,此处总结以我感觉比较重要的语句记录为主。1、Java虚拟机不和包括java在内的任何语言绑定,它只与Class文件,这种特定的二进制文件格式所关联。多种语言都可以把代码编译为Class文件。2、Class文件格式:类型名称解释u4magic魔数,0xCAFEBABE,固定值u2minor_原创 2017-01-08 21:36:51 · 773 阅读 · 0 评论 -
深入理解Java虚拟机5~虚拟机类加载机制
1、概述 Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,这为java应用程序提供高度的灵活性。例如:如果编写一个面向接口的应用程序,可用等到运行时再指定其实际的实现类;用户可以通过java预定义的和自定义的类加载器,让一个本地的应用程序可以在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分。2、类加载的时机类的生命周期:从上图中原创 2017-01-10 21:37:55 · 535 阅读 · 0 评论 -
深入理解Java虚拟机7~晚期(运行期)优化
为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器,简称JIT编译器。注:JIT编译器并非虚拟机必备的,但却是体现虚拟机技术水平的标杆。1、解释器与编译器 解释器:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。 编译器:编译执行能提高效率。即:解释执行节原创 2017-02-12 21:57:44 · 1030 阅读 · 0 评论 -
深入理解Java虚拟机6~虚拟机字节码执行引擎
1、运行时栈桢结构栈桢(为什么我每次都读成桢栈)是用于支持虚拟机进行方法调用和方法执行的数据结构,栈桢存储了方法的局部变量表操作数栈动态链接方法返回地址每一个方法从调用开始至执行完成的结束,都对应着一个栈桢在vm里面的入栈到出栈的过程。我们看一段代码:package test_technology;/** * * @author zhengchao */pu原创 2017-01-23 11:17:54 · 587 阅读 · 0 评论 -
神的回复,让一道jvm的题目瞬间简单,在中国,评论永远是最精彩的
今天看了一个博客写的一个题目如下:两个######之间的都是原文博客#################################################################################################################################class SingleTon { private st原创 2016-11-14 15:22:25 · 1185 阅读 · 1 评论 -
深入理解Java虚拟机学习总结(一) 自动内存管理机制
1、java技术体系:主要五类如下 java语言 各种硬件平台上的java虚拟机 class文件格式 java API类库 第三方java类库 java card JAVA ME(J2ME) JAVA SE(standard edition) JAVA EE(enterprise edit原创 2016-05-11 14:23:34 · 839 阅读 · 0 评论 -
JVM讲解
来源:http://blog.csdn.net/zchlww/article/details/51394139本人备存,方便自己学习。简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域:l 寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。l 栈:保存局部变量的值,包括:1.用来保存基本数据类型的值;2.保存类的实例,即堆区转载 2016-05-13 15:10:08 · 900 阅读 · 0 评论 -
JVM性能调优
JVM性能调优博客分类: JVM JVM垃圾回收与性能调优总结JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:转载 2016-10-25 10:32:15 · 598 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足转载 2016-11-16 14:18:40 · 544 阅读 · 0 评论 -
Java调优经验谈
原文:http://www.rowkey.me/blog/2016/11/02/java-profile/目录调优准备性能分析性能调优其他优化建议JVM参数进阶对于调优这个事情来说,一般就是三个过程:性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具转载 2016-11-16 17:09:11 · 3153 阅读 · 0 评论 -
java Class文件内部结构解析
java语言是跨平台的,所谓一次编写,到处运行。之所以是跨平台的,就是java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用java class文件来表示的,java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的,在linux系统或者在windows系统上都是一致的。这个就好比html文件,我们定义好规范,这个系统只要去按照规范显示出来里面的内容就好了。转载 2016-11-14 11:37:53 · 828 阅读 · 0 评论 -
从0到1起步-跟我进入堆外内存的奇妙世界
堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧。一、什么是堆外内存1、堆内内存(on-heap memory)回顾 堆外内存和堆内内存是相对的二个概念,其中堆内内存是我们平常工作中接触比较多的,我们在jvm参数中只要使用-Xms,-Xmx等参数就可以设置堆的大小和最大值,理解jvm的堆还需要知道下转载 2016-11-17 15:58:33 · 745 阅读 · 0 评论 -
学习Spring必学的Java基础知识----反射
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助。): [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-转载 2016-11-24 14:35:32 · 2132 阅读 · 1 评论 -
虚拟机字节码执行引擎
基于栈的解释器执行过程下面例子给出四则运算加减乘除法:public class Demo { public static void foo() { int a = 1; int b = 2; int c = (a + b) * 5; }}直接使用命令javap查看它的字节码指令如下:pub原创 2016-11-14 16:31:15 · 457 阅读 · 0 评论 -
Java 逃逸分析
什么是逃逸分析?逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他地方中,称为方法逃逸。例如以下代码:public static StringBuffer craeteStringBuffer(String s1, String s2) { StringBuffer sb = new StringBuffe...原创 2019-07-23 22:16:51 · 1504 阅读 · 0 评论