java虚拟机、规范、深入学习
本人对《java虚拟机规范》,《java虚拟机深入浅出》等书籍阅读所做的总结笔记,按时更新在本专栏。
饥饿小猪
只有打好扎实的基础,才能走的更远。 zhur_jim@163.com
(微信公众号:HungryPigKing)
展开
-
Java7 和Java8 堆(Heap)比较不同之处
堆是JVM内存中最大的一块内存空间,该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。堆被划分为新生代和老年代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Survivor和To Survivor组成。在Java6版本中,永久代在非堆内存区;到了Java7版本,永久代的静态变量和运行时常量池被合并到了堆中;而到了Java8,永久代被元空间取代...原创 2019-10-08 18:04:38 · 833 阅读 · 0 评论 -
java线上服务器jvm内存泄漏的一次踩坑(OutOfMemoryError)
前几天线上一台游戏服务器发生内存泄漏,cpu彪的很高,老板的脾气像cpu一样,是不是过来询问问题排查怎么样了。。。因为线上服务器启动的时候,加了- XX:+ HeapDumpOnOutOfMemoryError ,发现服务器项目目录下多一个hprof文件,这就是重要的线索,然后解析xxx.hprof这个文件,方法很多,(1)、可以使用JHAT,这是JDK默认提供的Java堆分析工具,jh...原创 2019-08-24 11:10:44 · 849 阅读 · 0 评论 -
四、Java代码在虚拟机上运行过程详解
一、初识java运行环境1、Java 代码有很多种不同的运行方式:(1)、idea中执行(2)、可以双击执行 jar 文件运行(3)、也可以在cmd命令行中运行(4)、甚至可以在网页中运行。注:这些执行方式都离不开 JRE,也就是 Java 运行时环境。实际上,JRE 仅包含运行 Java 程序的必需组件,包括 Java 虚拟机以及 Java 核心类库等。我们 Java...原创 2019-02-17 22:31:55 · 3146 阅读 · 0 评论 -
java虚拟机学习之路
最近在拜读《深入理解java虚拟机》和《java虚拟机规范》,同时购买了极客时间的专栏----甲骨文博士java高级研究员的《深入拆解java虚拟机》的专栏,三个同步学习,从中学习到了不少知识,三本书可以说是互补把,同时我也做了读书笔记总结,后面有时间,把读书笔记的核心知识点总结写再专栏中,也算是巩固所学知识!...原创 2019-02-17 21:19:40 · 391 阅读 · 0 评论 -
三、Java虚拟机自动内存管理机制、对象创建及内存分配
1、对象是如何创建:步骤: (1)、虚拟机遇到new <类名>的指令---->根据new的参数是否在常量池中定位一个类的符号引用 (2)、检测该符号引用代表的类是否已经被加载、解析、和初始化。(如果没有则执行类加载过程)。 (3)、在java堆中为新生对象分配内存。 (4)、将分配的内存初始化为零值(不包括对象头),保证了对象的实例字段在java代...原创 2018-09-25 22:14:11 · 244 阅读 · 0 评论 -
一、了解java虚拟机历史发展、及java8带来的新特性
1、Jdk8的新特性: 1.Lambda表达式 2.Stream函数式操作流元素集合 3.接口新增:默认方法与静态方法 4.方法引用,与Lambda表达式联合使用 5.引入重复注解 6.类型注解 7.最新的Date/Time API (JSR 310) 8.新增base64加解密API 9.数组并行(parallel)操作 ...原创 2018-09-22 10:50:40 · 570 阅读 · 0 评论 -
二、Java虚拟机自动内存管理机制、运行时数据区域深入了解
运行时数据区域: (1)、程序计数器 a、定义:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 b、线程私有:因为多线程是通过线程轮流切换并且分配处理器执行时间的方式来实现的,任何时刻, 一个处理器都只会执行一条线程中的指令。线程切换后要恢复到正确的执行位置,所以每条线程 都有一个独立的程...原创 2018-09-22 10:54:45 · 231 阅读 · 0 评论