行走的笔记

记录学习 笔记工作 理解自己

排序:
默认
按更新时间
按访问量

java虚拟机类加载机制(笔记)

类加载机制:虚拟机把描叙类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。 类加载的时机 类加载的生命周期包含:加载、验证、准备、解析、初始化、使用、卸载。其中,验证、准备、解析3个部分称为链接。 虚拟机对于类的初始化阶段...

2018-09-24 10:03:52

阅读数:8

评论数:0

java类文件结构(笔记)

Class文件是一组8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进...

2018-09-21 22:37:05

阅读数:48

评论数:0

jdk8:对内存溢出的思考

jvm内存溢出 JVM管理的几个内存区域分为: 方法区:用于存储JAVA类信息、常量、静态变量。这个区域也可以发生垃圾回收,比如当一些类不在被引用时JVM可以卸载这个类,不过这种回收动作很少发生。另外所有线程都共享方法区,因此线程对方法区的访问被设计为线程安全的。 虚拟机栈:JAVA虚拟机栈是线...

2018-09-18 12:34:57

阅读数:13

评论数:0

java枚举类型(enum)

枚举实现原理 package com.own.learn.jdk.enum1; public enum Day { MONDAY("monday"), TUESDAY(&am...

2018-09-14 19:26:47

阅读数:13

评论数:0

volatile的底层实现原理

CPU的术语定义 volatile是轻量级的synchronized,比之执行成本更低,因为它不会引起线程的上下文切换,它在多处理器开发中保证了共享变量的“可见性”,“可见性”的意思是当一个线程修改一个变量时,另外一个线程能读到这个修改的值。 volatile的定义和原理 Java语言规...

2018-09-14 12:34:41

阅读数:11

评论数:0

synchronized的使用以及原理

synchronized的三种应用方式 synchronized关键字最主要有以下几种应用方式 java对象头 在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。 实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内...

2018-09-09 15:29:22

阅读数:27

评论数:0

jdk8:Aop的代理研究

Spring AOP两种实现机制是什么? 如果是有接口声明的类进行AOP 时,spring调用的是java.lang.reflection.Proxy 类来做处理 如果是没有接口声明的类时, spring通过cglib包和内部类来实现 在AOP,权限控制,事务管理等方面都有动态代理的实现。...

2018-09-09 11:20:20

阅读数:11

评论数:0

Java泛型

特性 泛型只在编译阶段有效 public class GenericTest1 { public static void main(String[] args) { ArrayList<String> ...

2018-08-31 21:26:24

阅读数:11

评论数:0

jdk8:内存分配和回收策略

曹冲称象

2018-08-29 19:03:56

阅读数:167

评论数:0

jdk8:垃圾收集器

垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、火车算法)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别. 图中展示了7种不同分代的收集器: Serial、ParNew、Parallel Scavenge、Serial Old、Paralle...

2018-08-19 15:43:41

阅读数:63

评论数:0

git fork后如何更新

git fork后如何保持与源项目的更新: 首先保证本地仓库的upstream是源项目的URL,若没有则添加: git remote add upstream URL 然后利用fetch和merge合并upstream的master分支: git fetch upstream gi...

2018-08-10 09:46:19

阅读数:41

评论数:0

jdk8:垃圾回收算法

GC需要完成三件事:1,哪些内存需要回收?2:什么时候回收?3:如何回收? Java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知...

2018-08-05 15:16:42

阅读数:192

评论数:0

jdk8:jvm虚拟机内存模型

java内存模型,分为程序计数器,虚拟机栈,本地方法栈,java堆,java栈。根据受访的权限不同设置,可以分为线程共享和线程私有。线程共享指可以允许所有的线程共享访问的一类内存区域,包括堆内存区,方法区,运行的常量池。 程序计数器(Program Counter Register) 在虚...

2018-08-02 14:39:25

阅读数:49

评论数:0

jdk8:VisualVM

VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析。 内存堆heap 跑图例的代码 package co...

2018-07-29 18:32:30

阅读数:60

评论数:0

jdk8:jstack

语法 [@82995c215909 ~]$ jstack -h Usage: jstack [-l] (to connect to running process) jstack -F [-m] [-l] (...

2018-07-25 20:17:30

阅读数:27

评论数:0

jdk8:jhat虚拟机堆栈转存快照分析工具

用法 jhat -h Usage: jhat [-stack <bool>] [-refs <bool>] [-port <port...

2018-07-25 20:04:32

阅读数:34

评论数:0

jdk8:jmap

jmap作用,获取dump文件,查询finalize执行队列,java堆栈以及类加载器统计。 显示堆栈信息 [@82995c215909 /opt/logs]$ jmap -heap 12527 Attaching to process ID 12527, please wait… Deb...

2018-07-24 20:38:50

阅读数:47

评论数:0

jdk8:jinfo命令

jinfo 用法 ➜ ~ jinfo --help Usage: jinfo [option] <pid> (to connect to running process) jinfo [option] &a...

2018-07-19 20:08:42

阅读数:45

评论数:0

jdk8:jstat命令使用

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 查看远端的: [protocol:][//]lvmid[@hostname[:port]/servername] 类加载统计: [@...

2018-07-14 17:02:20

阅读数:131

评论数:0

jdk8下:jps命令

列出正在运行的虚拟机进程,并显示虚拟机执行主类(main class, main()函数所在的类)名称,以及这些进程的本地虚拟机Id(LVMID)。 使用方法:在当前命令行下打jps(jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path...

2018-07-13 20:05:13

阅读数:64

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭