随笔分类 - java-JVM
java 虚拟机的知识总结
摘要:概述 # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 12288 bytes for comm
阅读全文
摘要:> 部分图片和描述来自参考资料 ,非原创 ## 对象回收处理过程  ## 如何标定对象是否存活 两种方法 :
阅读全文
摘要:> 转载自 : https://www.cnblogs.com/strinkbug/p/6376525.html 调用栈里的引用类型数据是GC的根集合(root set)的重要组成部分;找出栈上的引用是GC的根枚举(root enumeration)中不可或缺的一环。 JVM选择用什么方式会影响到G
阅读全文
摘要:问题堆内外内存的区别是什么堆内外内存java 进程的内存占用到底是怎么样的呢?我们都知道 jvm 有垃圾回收机制,并且回收的重点区域就是堆,假如我们以堆内堆外来区分内存区域,上图所示堆内 A1堆外 B1 + B2B1 有可能是 DirectByteBuffer 分配的堆外内存,而 B2 是 Native Code 分配的内存。DirectByteBuffer 类以下描述代码图片来自 : https...
阅读全文
摘要:问题 类加载机制,一个类加载到虚拟机中一共有几个步骤,这些步骤的顺序哪些是固定的,哪些是不固定的,为什么不固定 答 : 1.加载 2.校验 3.准备 4.静态解析(不固定) 5.初始化 6.使用 7.动态解析(不固定) 8.卸载 参考连接 : https://www.jianshu.com/p/2a
阅读全文
摘要:堆大小设置 示例分析1 java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xms (设置初始化的java堆大小) -Xmx (设置java堆最大内存大小) -Xss (单个线程占用的栈大小) -Xmn (年轻代的大小) -Xms 和 -Xmx 的值相同,那么初始化就
阅读全文
摘要:类型指针 一般对象指针(oop, ordinary object pointer)是HotSpot虚拟机的一个术语,表示受托管的对象指针。它的大小通常和本地指针是一样的。Java应用程序和GC子系统会非常小心地跟踪这些受托管的指针,以便在销毁对象时回收内存空间,或是在对空间进行整理时移动(复制)对象
阅读全文
摘要:重写和重载 重载指的是方法名相同而参数类型不相同的方法之间的关系,重写指的是方法名相同而且参数列表也相同的方法之间的关系 。 public class OneOverride { // // 这两个方法构成重载 public void show(){ } public void show(Strin
阅读全文
摘要:top 命令 top 命令查看现在线程占用资料的情况。 第三行,cpu状态信息,具体属性说明如下: us — 用户空间占用CPU的百分比。(重要) sy — 内核空间占用CPU的百分比。 ni — 改变过优先级的进程占用CPU的百分比 id — 空闲CPU百分比 wa — IO等待占用CPU的百分比
阅读全文
摘要:概述 class类文件的结构可见下面这样图(出处见参考资料),可以参照下面的例子,对应十六进制码,找出找出相应的信息。 其中u2 , u4 表示的意思是占用两个字节和占用四个字节,下面我们将会各项说明。 class类文件结构 Class 文件是一组以8 字节位单位的二进制流,各个数据按照一定的顺序排放,Class文件采用一种类似于C语言结构体的伪结...
阅读全文
摘要:此篇文章半原创是对参考资料中的知识点进行总结,欢迎评论指点,谢谢! 部分知识点总结来自R大的帖子,下文有参考资料的链接 概述 G1 收集是相比于其他收集器(可见 上一篇文章),可以独立运行,同时做到了并发和并行。下面看一下它是如何实现的。 之前介绍的几组垃圾收集器组合,都有几个共同点: 年轻代、老年代是独立且连续的内存块; 年轻代...
阅读全文
摘要:收集器组合章节来自第一篇参考文章,非原创,作者总结地非常好! 分代收集相关概念来自参考文章第二篇,非原创 第二篇参考资料的文章质量很高,推荐阅读! 分代收集(Generational Collection)相关概念 在Java8的HotSpot虚拟机中一共包括了5个垃圾收集器,它们每一个都是基于分代
阅读全文
摘要:对象的创建 概述 下面简要介绍创建对象的几个重要步骤 : 检查能否在常量池定位到一个类的符号引用,并检查这个符号代表的类是否已被加载,解析和初始化过。如果没有则执行类加载的操作。(即是说对象的引用放在方法区里的) 堆中分配内存,分配有两种方式 指针碰撞(Bump the Pointer)--中间分条线一边已分配,一边未分配 空闲列表(free list)--已分配的空间...
阅读全文
摘要:Java 环境 Java 运行过程 下面几张图,我们可以了解到 Java 这门语言是如何进行运行的。 java文件通过编译器编译成class文件,然后在虚拟机中转化为机器语言运行在机器上。 上图展示了java 在不同平台的实现。下图则是大意视图。 JDK 和 JRE JVM:Java Virtual Machine(Java虚...
阅读全文