java虚拟机
LJHSkyWalker
热爱各种技术
星战迷!
展开
-
深入理解jvm 一 java内存区域
1、内存区域概要java虚拟机会在执行java程序的时候把它所管理的内存划分为若干的区域方法区(method area)(Non-Heap) 存储被虚拟机加载的类信息 常量 静态变量 即时编译器编译后的代码。jvm对方法区限制很宽松,GC处理在该区域较少见,但却是必要。否则会导致异常:OutOfMemoryError运行时常量池是class文件的一项信息,用于存放编译器生成的各种字面量和符号引用和...原创 2018-05-11 17:17:21 · 178 阅读 · 0 评论 -
基于SXSSFWorkbook并发插入数据到Excel多个Sheet中,并且解决内存溢出
本文主旨:基于SXSSFWorkbook将百万数据插入Excel; 多个Sheet页采用线程池的方式并发插入数据; ThreadPoolExecutor线程池实现; 基于CountDownLatch实现线程多线程结束后进行下一步操作; 基于Java VisualVM排查内存溢出并且分析POI窗口参数; 重温GC过程;先介绍我们的Demo要实现的功能:【创建一个四线程的线程池,将...原创 2018-12-25 23:00:29 · 8188 阅读 · 4 评论 -
什么情况下会发生堆内存溢出,栈内存溢出,结合实例说明
一、 栈溢出(StackOverflowError)栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口灯信息。局部变量表又包含基本数据类型,对象引用类型(局部变量表编译器完成,运行期间不会变化)所以我们可以理解为栈溢出就是方法执行是创建的栈帧超过了栈的深度。那么最有可能的就是方法递归调用产生这种结果。publ...原创 2018-10-09 14:58:17 · 34675 阅读 · 3 评论 -
基于JDK1.8 分析运行时常量池、字符串常量池、各种常量池
Java中的常量池分为三种类型:类文件中常量池(The Constant Pool) 运行时常量池(The Run-Time Constant Pool) String常量池 类文件中常量池 ---- 存在于Class文件中所处区域:堆诞生时间:编译时内容概要:符号引用和字面量class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量的符号引用...原创 2018-09-03 13:18:16 · 21282 阅读 · 9 评论 -
深入理解jvm 一 线程安全
线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以活得正确的结果,那么这个对象就是线程安全的。java语言中得各种操作共享数据可以分成五类1、不可变:不可变的对象一定是线程安全的,无论对象的方法实现还是方法的调用者都不需要在采取安全措施。如果共享数据是一个基本数据类型,那么只要...原创 2018-05-14 22:10:52 · 1286 阅读 · 0 评论 -
深入理解jvm 一 虚拟机类加载机制
1、类加载时机类从被加载到虚拟机内存中开始到卸载出内存为止,整个生命周期:加载->验证->准备->解析->初始化->使用->卸载 ------连接阶段-----加载顺序并不是按部就班的进行,也有可能交叉式的进行。加载验证准备初始化和卸载这五个阶段的顺序是确定的。加载1、通过一个类的全限定名来获取此类的二进制字节流2、将这个字节流所代表的静态存...原创 2018-05-13 22:02:58 · 158 阅读 · 0 评论 -
深入理解jvm 一 java内存模型与线程
摩尔定律:是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。Amdahl定律:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被...原创 2018-05-13 22:02:00 · 485 阅读 · 0 评论 -
深入理解jvm 一 类文件结构
1、class类文件结构class文件是一组以8位字节为基础单位的二进制流class文件只有两种数据类型:无符号数和表无符号数:基本的数据类型,可以用来描述数字、索隐引用、数量值或者按照UTF-8编码构成的字符串值。表:多个无符号数或者其他表组成的复合数据结构。class文件基本组成1、魔数:每个class文件的头4个字节成为魔数,唯一作用是确定这个文件是否为一个能被虚拟机接受的class文件2、...原创 2018-05-12 17:30:57 · 134 阅读 · 0 评论 -
深入理解jvm 一 垃圾收集器与内存分配策略
1、对象生与死(判断对象存活依据)典型的判断对象存活的算法:引用计数算法每当有一个地方引用该对象,该对象计数器加1,引用失效减1,任何时刻计数为0的对象都是待宰的。特点高效,简单,但是互相引用时会出现对象一直存活的情况。由此java选择可达性分析算法来判断对象生死基本思路:通过GC Roots对象做起点,从节点往下搜索,搜索路径成为引用链。如果从GC Roots到对象不可达,则判死缓。何为死缓:可...原创 2018-05-11 20:48:09 · 160 阅读 · 0 评论 -
JVM参数与其对应的内存区域【图文结合】
第一次全面了解JVM调优参数命令,所以我打算结合JVM内存区域与参数的对照图,做一份笔记。下面我列出一些常用的jvm参数,供新手朋友们参考 标准参数:控制台输入命令java -help 可以查看所有的java标准参数C:\Windows\system32>java -help用法: java [-options] class [args...] (...原创 2019-02-03 15:13:09 · 441 阅读 · 0 评论