A few questions:
1. What OS? What version? 64 or 32 bit?
2. What Java version? 64 or 32 bit?
3. How much system ram? How much ram is "stolen" by your video chip?
4. What speed is your CPU?
5. What version of Minecraft/Direwolf20?
These are important for the following reasons:
1. A 32 bit OS stopped being very usable when MC 1.7.x became prevalent in packs. This is because a 32 bit OS cannot address the ram required to keep itself and a large MC pack running well. A 32 bit CPU can only address 4GB directly due to hardware limits (32 bit address bus) and thus a 32 bit OS cannot either. 32 bit is still ok for Vanilla MC and very small 1.7.x packs.
2. 32 bit java limits the amount of ram you can allocate for applications. 64 bit Java, because of the greater addressable ram range allowed by a 64 bit CPU lets you to specify the ram allocation. While 32 bit Java will run on a 64 bit OS, 64 bit Java will not run on a 32 bit OS. Java hasn't updated cleanly in the past so even with a 64 bit OS you may be running 32 bit Java without knowing it.
3. Laptops are known for having limited ram capability, depending on age. If older than about 5 years you may be limited to 4GB maximum. Laptops are also notorious for being equipped with "integrated graphics", which means your graphics system is reserving a block of memory strictly for video operations. This means your total available ram is less than the physical installed ram. In Windows this will show up in your "System Information" screen similar to "4096MB installed, 3840MB available" indicating that the video is using 256MB (this may be more or less, depending on the video chip. Windows systems tend to require 1-2GB ram for itself, depending on version. In order to run software you must have more than that amount, plus what the video is using.
4. CPU speed is more an issue than the number of cores... Minecraft isn't written to use more than 1 core (yet).
5. This is where all of the above comes together. Newer versions of Minecraft need more memory to run. All Mods need additional memory to run - the larger the pack (number of mods) the more memory needed. For example, a large pack running on MC 1.7.10 like Infinity Evolved or to a lesser extent Direwolf20 will be happiest running with 3-4GB dedicated to Java. I've seen claims that 2.5GB works, but that's running with in-game settings like Render Distance turned down. MC 1.6 packs will run with less memory, MC 1.5 is ok with even less and even runs ok with 32 bit setups, etc. You do not want to allocate more than 4GB for Java, as Minecraft is not the most memory friendly Java App ever written and Java's internal memory cleanup will start having problems, which cause some lag..
My desktop setup has 8GB physical memory installed, all of which is available since I don't have integrated graphics on my mainboard and my video card has it's own 1GB just for video use. I have a 4Ghz CPU (4 dual-cores, not that that matters in Minecraft). I run Windows 10, which needs about 1GB for it's own use, and I allocate 4GB for modded Minecraft.