E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
《深入理解Java
深入理解Java
虚拟机-垃圾收集器
在前面的文章中,我们提到了几种常见的垃圾收集算法,今天咱们来说一说商用Java虚拟机中经典的垃圾收集器。新生代收集器我们首先介绍三种新生代的垃圾收集器,分别是Serial收集器、ParNew收集器和ParallelScavenge收集器。Serial收集器Serial收集器是最古老的垃圾收集器,曾经是新生代垃圾收集的唯一选择。这是一种单线程的垃圾收集器,采用标记-复制算法,在进行垃圾收集时,所有的
sky-ng
·
2020-08-23 18:09
Java
深入理解Java
虚拟机-判断对象是否存活算法与对象引用
在之前的文章中我们谈到过Java内存区域的概念,我们知道Java中的对象一般存放在堆中,但是总不能让这些对象一直占着内存空间,这些对象最终都会被回收并释放内存,那么我们如何判断对象已经成为垃圾呢?这篇文章会提出两种算法解决这个问题。另外,本文还要谈一谈对象引用相关的知识,这在面试中也是经常被问到的问题。判断对象是否存活算法引用计数算法引用计数算法的原理比较简单,在对象中添加一个引用计数器,当有一个
sky-ng
·
2020-08-23 18:09
Java
jvm低延迟垃圾收集器(Shenandoah)
出入:
深入理解Java
虚拟机:JVM高级特性与最佳实践(第3版)衡量垃圾收集器的三项最重要的指标是:内存占用(Footprint)、吞吐量(Throughput)和延迟(Latency),三者共同构成了一个
qq_26855461
·
2020-08-23 18:44
HotSpot的算法细节实现
出入:
深入理解Java
虚拟机:JVM高级特性与最佳实践(第3版)看到这一章,自己也有些模棱两可,无法归纳出自己的见解,后面慢慢理解吧。
qq_26855461
·
2020-08-23 18:43
深入理解Java
虚拟机(一)java运行时数据区域
Java语言和虚拟机规范官方文档:https://docs.oracle.com/javase/specs/index.html概述Java虚拟机在执行程序的过程中,会把它管理的内存分为不同的数据区域。其中一些数据区域是在Java虚拟机启动时创建的,仅在Java虚拟机退出时才被销毁。有些数据区域是每个线程私有的。在创建线程时创建每个线程的数据区域,并在线程退出时销毁每个数据区域。如图所示:程序计数
handsomehou
·
2020-08-23 17:29
Java基础
Java虚拟机内存溢出异常
前几天读《
深入理解Java
虚拟机》测试了一下书中所写的java虚拟机异常的代码,特在此整理一下。
宋某人Jsong
·
2020-08-23 17:54
Java核心
深入理解java
虚拟机—— 超详细虚拟机垃圾收集器原理,GC 垃圾收集器算法的深度解析,项目中如何选择合适的垃圾收集器
目录一、收集器的功能1、哪些内存需要回收?2、什么时候回收?3、如何回收?标记-清除(Mark-Sweep)算法复制算法算法标记-整理算法分代收集算法二、垃圾收集器有那些并发垃圾收集和并行垃圾收集的区别MinorGC和MajorGC的区别虚拟机经典回收器,7大垃圾回收器:1、Serial收集器2、ParNew收集器3、ParallelScavenge收集器4、SerialOld收集器5、Paral
努力就好其他的不管
·
2020-08-23 16:54
深入了解
JVM
深入理解java
虚拟机—— 虚拟机 深扒垃圾回收器,再也不怕BAT面试
目录下面开始本篇主要介绍的内容:Java虚拟机垃圾回收------为什么需要了解垃圾回收------GC回收那些对象,何时回收,如何回收------1、垃圾回收器回收那些内存?------2、什么时候回收?即GC发生在什么时候?------3、如何回收?关于GC什么时候回收?即GC发生在什么时候?------判断可回收有2种方式:------1、引用计数算法(RecferenceCounting)
努力就好其他的不管
·
2020-08-23 16:22
深入了解
JVM
【
深入理解JAVA
虚拟机】第二部分.内存自动管理机制.5.调优实战
高性能硬件上的程序部署策略在高性能硬件上部署程序,目前主要有两种方式:通过64位JDK来使用大内存。--缺点:GC停顿时间长使用若干个32位虚拟机建立逻辑集群来利用硬件资源。--思想:分治,汇总。缺点:分布式/多实例的缺点,如数据共享,数据一致性,一致性hash等。堆外内存导致的溢出错误垃圾收集进行时,虚拟机虽然会对DirectMemory进行回收,但是DirectMemory却不能像新生代、老年
dizi9750
·
2020-08-23 16:15
JVM学习笔记(八):类加载器以及双亲委派模型介绍
本章内容根据《
深入理解Java
虚拟机》第7章部分内容整理1.什么是类加载器?
青葱岁月
·
2020-08-23 16:12
Java
JVM
ParNew收集器详解
以下摘自:《
深入理解Java
虚拟机:JVM高级特性与最佳实践》第3章垃圾收集器与内存分配策略ParNew收集器其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial
caoliangbo
·
2020-08-23 16:48
JVM
JVM学习笔记(四):JVM类加载机制
接下来,我将继续,参考着周志明老师的《
深入理解Java
虚拟机》,以及一些自己查阅的书籍、资料,总结一下JVM类加载机制相关的知识。
小伦超正经
·
2020-08-23 15:16
Java
JVM(三)图解垃圾回收
——《
深入理解Java
虚拟机》Java语言是一门自动进行垃圾回收的语言垃圾回收(GC)指的是:对象在使用完毕之后,在应用系统之后的运行过程中,不会再使用到这个对象,那么这个对象就应该被回收掉,让出它所占用的
destiny ~
·
2020-08-23 15:31
JVM
深入理解Java
虚拟机——自动内存管理机制
特此申明:前段时间找工作所以看了这本书,整理的时候除了参考网上已有的笔记贴,加上自己整合的,可能和别人有雷同之处。不过无所谓啦,写出来自己看看,需要的朋友参考下,仅此而已。一:Java内存区域与内存溢出异常在运行Java程序时,Java虚拟机会把管理的内存划分为若干个不同的数据区域。Java虚拟机运行时数据区数据区域图中,除了方法区和堆区是线程共享区外,其他三个是线程隔离的数据区(private)
瑛民星
·
2020-08-23 15:13
Java
书籍笔记
设置项目JVM参数的几种方式及使用jvisualvm打开分析dump文件
最近阅读《
深入理解java
虚拟机》,对书中的一些例子进行实操故记录一下自己的学习内容。
林先生拆坑日记。
·
2020-08-23 14:14
JVM
深入理解JMM
深入理解Java
内存模型(一)——基础https://my.oschina.net/jerikc/blog/174164并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步
驭乐MJ
·
2020-08-23 14:31
深入理解java
注解的实现原理
今天将从以下4个方面来系统的学习一下java注解什么是注解注解的用途注解使用演示注解的实现原理1,什么是注解注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解一般常用的注解可以分为三类:一类是Java自带的标准注解,包括@Override(标明重写某个方法)、
御赐
·
2020-08-23 14:49
java
深入理解Java
虚拟机(二)Java垃圾回收看这篇就够了!
引用《
深入理解Java
虚拟机》书里的一句话:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。
handsomehou
·
2020-08-23 14:32
Java基础
深入理解java
虚拟机—— 虚拟机 新型垃圾收集器 Shenandoah GC, ZGC
目录一、垃圾回收器的发展历程简介:二、衡量垃圾收集器的三项最重要的指标1、计算机的发展趋势以及垃圾回收器的选择Shenandoah相比起G1又有什么改进?Shenandoah收集器的工作过程分为以下九个阶段:Shenandoah收集器的工作过程:BrooksPointerShenandoah在实际应用中的性能表现二、ZGC收集器ZGC的功能实现:染色指针的三大优势:ZGC收集器是如何工作处理过程:
努力就好其他的不管
·
2020-08-23 14:33
深入了解
JVM
【Java】
深入理解Java
中的spi机制
深入理解Java
中的spi机制SPI全名为ServiceProviderInterface是JDK内置的一种服务提供发现机制,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件
choukuang2007
·
2020-08-23 14:23
深入理解JAVA
中的SPI机制
什么是SPISPI全名为ServiceProviderInterface是JDK内置的一种服务提供发现机制,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件,简单来说,它就是一种动态替换发现的机制。在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改
Lyzxii
·
2020-08-23 14:51
源码
java多态
下面经过我的多方调查,调查结果如下:首先,我们先对Java的多态说起:多态分为两种a.编译时多态:方法的重载;ps:添加一句《
深入理解java
虚拟机》上看到的话:编译器虽然能确定方法的重载版本,但是在很多情况下这个重载版本并不是唯一的
来日可期1314
·
2020-08-23 11:11
分享经验
jvm
java
多态
Java虚拟机初探
可这种方式不能长久的记忆,随通过《
深入理解Java
虚拟机:JVM高级特性与最佳实践(第三版)》进行系统的学习
小海子l
·
2020-08-23 10:48
java
谈谈java中的引用
---来自《
深入理解java
虚拟机》这个定义就是指的强引用,这种强引用只能描述两种情况,被引用和未被引用,为了能表示内存充足就引用着,内存不足就回收的情况,又搞出来三个(其实是四个,还有一个FinalRe
Bigbear
·
2020-08-23 09:56
java
谈谈java中的引用
---来自《
深入理解java
虚拟机》这个定义就是指的强引用,这种强引用只能描述两种情况,被引用和未被引用,为了能表示内存充足就引用着,内存不足就回收的情况,又搞出来三个(其实是四个,还有一个FinalRe
Bigbear
·
2020-08-23 09:01
java
深入理解Java
Script系列(3):全面解析Module模式
简介Module模式是JavaScript编程中一个非常通用的模式,一般情况下,大家都知道基本用法,本文尝试着给大家更多该模式的高级使用方式。首先我们来看看Module模式的基本特征:模块化,可重用封装了变量和function,和全局的namaspace不接触,松耦合只暴露可用public的方法,其它私有方法全部隐藏关于Module模式,最早是由YUI的成员EricMiraglia在4年前提出了这
weixin_34167043
·
2020-08-23 08:55
深入理解Java
Runtime Area Java运行时数据区
JavaRuntimeArea的分类从线程的角度理解JavaRuntimeArea从存储内容理解JavaRuntimeArea方法区中究竟存储了哪些信息?基本数据类型的成员变量放在jvm的哪块内存区域里?JavaRuntimeArea的分类JavaRuntimeArea主要可以分为六部分:ProgramCounter(PC)Register程序计数器JavaVirtualMachineStacks
六尺帐篷
·
2020-08-23 07:23
深入理解Java
双冒号(::)运算符的使用
Jdk8中有好多新的特性,比如引入Lambda,简化代码的书写等等我们先看一个关于Lambda的使用/***输出list*/@Testpublicvoidtest(){String[]array={"aaaa","bbbb","cccc"};Listlist=Arrays.asList(array);//Java7for(Strings:list){System.out.println(s);}/
h_sn999
·
2020-08-23 05:46
java
《
深入理解Java
虚拟机》笔记02之HotSpot虚拟机对象探秘
2.3HotSpot虚拟机对象探秘基于实用优先的原则,作者以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。2.3.1对象的创建在语言层面上,创建对象(例如克隆,反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?虚
etron_jay
·
2020-08-23 03:59
JVM虚拟机
Java基础
深入理解Java
虚拟机---笔记
原文链接:https://www.cnblogs.com/wtzbk/p/7985156.html
深入理解Java
虚拟机---笔记(原文上修改)part1走进javajava发展史,Java虚拟机发展史
ZLL_csdn2018
·
2020-08-23 02:49
Java
《
深入理解Java
虚拟机》读书笔记
第一部分,走进Java第二部分,自动内存管理机制:第二章:Java内存区域与内存溢出异常一,Java中,虚拟机自动管理内存机制,不在需要为每一个new操作去写配对的delete和free操作,不容易出现内存泄漏和内存溢出的问题。但是不好排除。二,运行时数据区域:Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。以及创建和销毁的时间。1)程
意必固我_LRL
·
2020-08-23 02:20
Java
jvm
学习笔记博客
《
深入理解Java
虚拟机》笔记-HotSpot虚拟机对象探秘
关于HotSpot虚拟机在Java堆中对象分配、布局、访问的全过程。1.对象的创建虚拟机遇到new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析、初始化过。如果没有,执行相应的类加载过程。为新生对象分配内存。对象所需内存大小在类加载完成后就能确定。分配内存的方式取决于Java堆是否规整,也就是取决于所采用的的垃圾收集器是否带有压
qr457535344
·
2020-08-23 02:08
Java
《
深入理解java
虚拟机》读书笔记——jvm内存区域
java虚拟机所管理的内存将会包括下列几个运行时数据区域:一、方法区:1、用于存储已被虚拟机加载的类信息、常量、静态变量和即时编译器编译后的代码等数据。2、垃圾收集在这个区域较少出现,主要是针对常量池的回收和类型的卸载,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常(OOM)。3、该区域被线程共享。4、运行时常量池是方法区的一部分,用于存放编译时期生成的各种字面量和符号
GokusJQK
·
2020-08-23 02:35
jvm读书笔记
jvm内存区域
深入理解java虚拟机
读书笔记
深入理解JAVA
虚拟机读书笔记:HotSpot虚拟机对象探秘
HotSpot虚拟机对象探秘1、对象的创建虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位这个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,那必须先执行响应的类加载过程。(类加载会在后面的章节给出)。在类加载检查通过后,虚拟机将会为新生对象分配内存。对象所需的内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大
我爱袁婷
·
2020-08-23 01:18
JVM
深入理解java
虚拟机学习笔记(一)
第二章java内存区域与内存溢出异常这一章将从概念上介绍java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及可能产生的问题。2.1运行时数据区域根据《java虚拟机规范(javaSE7版)》的规定java虚拟机所管理的内存包括程序计数器、java虚拟机栈、本地方法栈、java堆、方法区。这些区域有的随着虚拟机进程的启动而存在,有的依赖用户线程的启动和结束而创建和销毁。2.1.1程序计数器
Terisadeng
·
2020-08-23 01:41
Java
深入理解java
虚拟机读书笔记-HotSpot虚拟机对象探秘
对象的创建在Java虚拟机中创建对象(仅限于普通对象,不含数组和Class对象)大致的过程是:创建对象的类加载检查为新生对象分配内存内存空间初始化为零值对象进行必要的设置执行方法类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。为新生对象分配内存在
LYF0707
·
2020-08-23 00:58
读书笔记《
深入理解java
虚拟机》-- Java对象于HotSpot探秘
Java对象于HotSpot探秘导论这篇文章是从内存上大致总结在HotSpot中JAVA对象的部分实现的细节。首先我们先从java对象的创建出发,了解java对象的内存分配的方式和内部布局的细节。之后为了引出jvm的重点之一垃圾回收(本篇文章先不涉及),我们需要再了解java虚拟机内部是怎么找到到Java对象的。这个就是本篇文章的阅读思路。一、JAVA对象的创建于内存的变化JAVA对象内存划分的两
一名假人
·
2020-08-23 00:41
JAVA学习
jvm
指针
java
读书笔记《
深入理解java
虚拟机》-- Java内存区域
JAVA内存区域一、图解二、解释1.方法区定义方法区(MethodArea)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据补充在JDK8之前的,大部分的Java程序员更愿意讲方法区称呼为“永久代”。这是因为当时的虚拟机的设计把垃圾回收的分代设计扩展至方法区,让永久代的方式实现方法区,试图可以让永久代的垃圾回收算法管理
一名假人
·
2020-08-23 00:41
JAVA学习
深入理解java
虚拟机(九)类加载器以及双亲委派模型
虚拟机把类加载阶段中“通过一个类的权限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类与类加载器任意一个类,都需要由加载它的类加载器和这个类本身共同确定其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。这句话可以表达的更通俗一些:比较两个类是否相等,只有在这两个类是同一个类加载
张小琦
·
2020-08-23 00:39
Java
虚拟机
深入理解Java虚拟机
再有人问你Java内存模型是什么,就把这篇文章发给他。
网上有很多关于Java内存模型的文章,在《
深入理解Java
虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。
奥莉安娜的棒棒糖
·
2020-08-22 23:39
深入理解Java
中的反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。一:Class类在面向对象的世界里,万物皆对象。类也是对象,类是java.lang.Class类的实例对象。Class类的实例表示正在运行的Java应用程序中的类和接口。枚举是一种类,注释是一种接口。
weixin_34128501
·
2020-08-22 23:30
java
运维
Java虚拟机类加载机制
本文是《
深入理解Java
虚拟机》第七章的读书总结。Class文件中存储了类(或接口)中的元数据信息和编译后的字节码。这些信息需要存入Java虚拟机中才能被虚拟机利用和执行。
Ezioooooo
·
2020-08-22 23:12
Java
Java虚拟机
Java虚拟机类加载过程
文章摘自:
深入理解Java
虚拟机第二版周志明著本文主要讲解一个Java虚拟机中类加载的全过程,也就是加载、验证、准备、解析和初始化这5个阶段所执行的具体动作。
gary0917
·
2020-08-22 21:52
jvm
Java虚拟机内存知识整理
书名:
深入理解Java
虚拟机,强烈推荐入手一读。正文运行时数据区域程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。
li504799868
·
2020-08-22 18:36
读书笔记
Android
深入理解Java
多态性
看过一些关于Java多态性的文章,参考了很多人的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正。(一)相关类classA...{publicStringshow(Dobj)...{return("AandD");}publicStringshow(Aobj)...{return("AandA");}}classBextendsA...{publicStringsh
just学习
·
2020-08-22 16:03
java
JVM内存区域和垃圾回收思想
参考:《
深入理解Java
虚拟机》第二版——周志明JVM调优总结——和你在一起运行时数据区谈到JVM的内存管理就必须了解它的运行时数据区,了解下图中各区域的功能和数据存储的类别十分必要。
RealityVibe
·
2020-08-22 15:54
JS中原型对象的理解
深入理解Java
Script原型相比于基于类的语言(如java或者C++),JavaScript是动态的,并且本身不提供一个class实现(在ES2015/ES6中引入了class关键字,但那只是语法,
小K哥
·
2020-08-22 15:14
web
前端
javascript
原型
《
深入理解Java
虚拟机》(二)--垃圾收集器与内存分配策略(4)
内存分配与回收策略对象的内存分配规则不是固定的,是取决于你使用的是哪种垃圾回收器组合和虚拟机中的内存参数,如果启动了本地线程分配缓冲,将按线程优先在TLAB(之前提到过)上分配,接下来将验证几种常见的分配策略基于JDK1.8(书上是1.7和我测试的结果完全不一样QAQ,这应该是因为使用的垃圾回收器不一样所导致的)。1/1对象优先在Eden上分配堆中的分代如下图:image.png大多数情况下,对象
蓝色_fea0
·
2020-08-22 14:41
深入理解Java
线程通信
当线程在系统内运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但Java也提供了一些机制来保证线程协调运行。传统的线程通信假设现在系统中有两个线程,这两个线程分别代表存款者和取钱者——现在假设系统有一种特殊的要求,系统要求存款者和取钱者不断地重复存款、取钱的动作,而且要求每当存款者将钱存入指定账户后,取钱者就立即取出该笔钱。不允许存款者连续两次存钱,也不允许取钱者连续两次取
·
2020-08-22 13:30
我看过的书【按类型分类篇】
一.计算机专业类1.1内功篇《算法》(Java篇)第四版1.2语言篇《Java编程思想》第4版《
深入理解Java
虚拟机》第二版《Java并发编程实战》《Spring实战》第四版《Spring源码深度解析
老曹
·
2020-08-22 11:01
书籍
上一页
25
26
27
28
29
30
31
32
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他