Author Archives: coder4

[转]Java中的新生代、老年代、永久代和各种GC

转载自:《JVM的新生代、老年代、MinorGC、MajorGC》

JVM中的堆,一般分为三大部分:新生代、老年代、永久代:

1 新生代

主要是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。

 

新生代又分为 Eden区、ServivorFrom、ServivorTo三个区。

  • Eden区:Java新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当Eden区内存不够[……]

继续阅读

Java进程内存分析工具之jmap

jmap是java 7后自带的轻量级内存分析工具,原文介绍可以见官网,《The jmap Utility》

1 堆栈分析

获取GC算法,新生代,老年代,永久代空间占用分析

2 堆详细对象分析

3 永久代分析

 

 

通过openvpn + iptables实现NAT访问远程IDC集群内网

在IDC跨机房,或者docker集群的使用中,经常会有这样的需求:

本地办公网络可以直接访问远程IDC集群的内网。

有两种方案:

  • 双向建立路由表
  • iptables搞定NAT

路由表是最稳妥的做法,但是双向设置比较繁琐,而且容易出错。

本文介绍的是iptables + openvpn方案。

1、方案:

本地LAN <– iptables+NAT –> 带openvpn的中转软路由 <– openvpn –> 远程i[……]

继续阅读

Ubuntu通过双网卡+NAT实现共享上网

一个简单的实验,具体见 Internet/ConnectionSharing

说一下实验环境,两台vm虚拟机,Ubuntu 16.04

  • vbox-tmp-1 enp0s3连接外网 enp0s8临时内网选internal net,tmpnet
  • vbox-tmp-2 临时内网选internal net,tmpnet

也就是说,我们想让tmp2通过tmp1连接互联网。

这里的做法是让tmp1的网卡2和tmp2的网卡1在同一个网段,然后在tmp1上通过iptables完[……]

继续阅读