2020年4月

不要钱才怪
  • 1.How CPU executes a program (video-注意看最下层字幕)
    {dplayer src="https://cdn.shafish.cn/video/m3u8/How-CPU-executes-a-program/Fetch-Decode-Execute%20Cycle.en.m3u8"/}

  • 2.Boolean Logic & Logic Gates: Crash Course Computer Science #3(中文字幕)

{dplayer src="https://cdn.shafish.cn/video/m3u8/booleanLogicGates/cn/booleanLogicGates-cn.m3u8"/}


  • 3.Boolean Logic & Logic Gates: Crash Course Computer Science #3(英文字幕)

{dplayer src="https://cdn.shafish.cn/video/m3u8/booleanLogicGates/en/booleanLogicGates-en.m3u8"/}


  • 4.How Computers Calculate - the ALU: Crash Course Computer Science #5(中文字幕)

{dplayer src="https://cdn.shafish.cn/video/m3u8/howComputersCalculate-TheALU/cn/howComputersCalculate-TheALU-cn.m3u8"/}


  • 5.How Computers Calculate - the ALU: Crash Course Computer Science #5(英文字幕)

{dplayer src="https://cdn.shafish.cn/video/m3u8/howComputersCalculate-TheALU/en/howComputersCalculate-TheALU-en.m3u8"/}


- 阅读剩余部分 -

YGC:在堆中的新生代中进行的垃圾回收操作。也叫Minor GC。

怎么判断一个对象可以进行垃圾回收

  • 首先肯定得知道对象被ygc了多少次。Java语言的开发人员在Java对象头中进行了相关的设置,准确来说是在对象头中的mark work中进行了设置。 点击这里查看markOop.hpp


来看第44行中的说明:

  • unused:Java对象中预留给未来的25位
  • hash:对象的hash值,31位
  • age:gc次数,4位
  • biased_lock:偏向锁标识(只有一个线程访问时,不用每次都获取锁),配合lock使用,1位
  • lock:对象的锁级别,2位。unlocked(无锁)(0 01)、偏向锁(1 01)、locked(轻量级锁)(00)、monitor(重量级锁)(10)、marked(GC标记)(11)

上面5个属性再加上一个unused,一共占了64位,也就是8个字节,这些在64位系统下的配置。

可以看到age明确表明了只占有4位长度(0.5个字节),能存0~15的值。然后发现通过-XX:MaxTenuringThresholdjvm命令对age值进行调整,默认为15。

记录

在网上看到过设置MaxTenuringThreshold大于15的情况。疑问:设置的MaxTenuringThreshold参数是否you效??

参考:
https://stackoverflow.com/questions/13543468/maxtenuringthreshold-how-exactly-it-works
https://support.oracle.com/knowledge/Middleware/1283267_1.html